# Referenční přehled MCP nástrojů (https://docs.vitrinka.ai/cs/reference/mcp-tools)



{/* Code generated by tools/gen-docs-mcp from internal/mcpserver/tools.json. DO NOT EDIT. Regenerate: go run ./tools/gen-docs-mcp */}

Každý nástroj, který MCP endpoint nasazení nabízí, seskupený podle oblasti. Je to stejný slovník, jaký agent vidí na živém připojení — názvy, titulky a popisy jsou citované doslova ze serverové tabulky nástrojů, a proto zůstávají anglicky: jsou to API rozhraní. Rozsah katalogu, který registrace nabízí, určuje `vitrinka setup` podle nainstalovaných pluginů (`/mcp?modules=…`).

Nástroje označené jako jen ke čtení nikdy nezapisují; všechno ostatní je zápis a prochází vymezením workspace a tam, kde je aktivní, potvrzovací bránou výchozího workspace. Nástroje pojmenované `<verb>_<kind>` se na živém připojení nevypisují: volají se obecným slovesem s `kind` (`list {kind: "sprint"}`); `docs {topic: "kind:<kind>"}` vrací kontrakt daného druhu. Každý nástroj přijímá `select`, `jq` a `budget`; odpověď nad rozpočtem server zadrží a vrátí obálku `over_budget` se jmény zužujících argumentů.

## Obecná slovesa [#verbs]

### `list` — List a kind [#list]

Page a kind. Contract: docs \{topic:"kind:\<kind>"}.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `get` — Read a kind [#get]

Read a kind; docs kind:\<kind> has its contract.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `create` — Create one of a kind [#create]

Create one kind using its arguments. Contract: docs \{topic:"kind:\<kind>"}.

*Modul: core*

### `update` — Update a kind [#update]

Update a kind; docs kind:\<kind> has its contract.

*Modul: core*

### `delete` — Delete one of a kind [#delete]

Delete one kind using its arguments. Contract: docs \{topic:"kind:\<kind>"}.

*Modul: core*

### `search` — Search the workspace [#search]

Tasks, epics, stories by title words, plus pages, boards, tags, cards, sessions, shots, annotations (by №); mode:"resolve": one task reference → verdict, ≤5 candidates.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

## Nástěnky [#boards]

### `list_boards` — List boards [#list_boards]

List annotation boards (slug, title, project, subgroup, tags, url). ALWAYS narrow — project, subgroup, board\_type (e.g. journeys) and/or tags run as one indexed query; unscoped exceeds any budget.

Volá se jako `list {kind: "board", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `create_board` — Create board [#create_board]

Create a board: slug, url and metadata back. board\_type defaults to "board" ("brainstorm" or a custom token for sub-types); stamp project and subgroup (reviews · testing · sessions · brainstorming · design · journeys; inferred when omitted). Then ARM THE LISTENER — a board without one queues annotations nobody reacts to.

Volá se jako `create {kind: "board", …}`

*Modul: core*

### `set_board_meta` — Update board metadata [#set_board_meta]

Update a board's subgroup, theme, tags, archived flag or meta bag (meta is a shallow merge-patch) — contract: docs \{topic:"organization"}.

*Modul: core*

### `compose_board` — Compose board content [#compose_board]

Place a batch of AI-authored content on a board — cards, frames, wires, questions — by intent, never coordinates; all-or-nothing — contract: docs \{topic:"composing"}, payloads docs \{topic:"\<kind>"}.

*Modul: core*

### `update_cards` — Update board cards [#update_cards]

Batch-edit your own AI-layer cards and frames, remove (soft, 30 days) or restore; others' cards take the 409 confirm handshake — contract: docs \{topic:"composing"}.

*Modul: core*

### `arrange` — Arrange board cards [#arrange]

Auto-align board cards by intent — mode, gap/padding, scope; save:true persists a section layout — contract: docs \{topic:"sections"}.

*Modul: core*

### `scrape_board` — Read board digest [#scrape_board]

Read a board as one digest: cards with section, media URLs, notes, annotations, journey chains, questions and the sections map; section isolates one journey — contract: docs \{topic:"sections"}.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `list_sections` — List board sections [#list_sections]

A board's journey-section index: every section (name, bounds, member count, order, journey/pass) plus journeys \[\{journey, title, passes, latest}] — cheaper than scrape\_board when you only need the map to pick a section or journey.

Volá se jako `list {kind: "section", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `highlight` — Highlight board region [#highlight]

Draw a live ink rectangle on an annotation's shot card (defaults to its region; x/y/w/h in source pixels) — "the element you mean is HERE".

*Modul: rare*

### `board_working` — Show working status [#board_working]

Narrate what you are doing on a brainstorm board: open tabs show the status line and `expected` ghost tiles where the next questions land. Post it when a ↻ Regenerate batch arrives, then compose; it clears when questions land; decays after 90 s.

*Modul: rare*

### `get_capsule` — Get work capsule [#get_capsule]

One annotation's compact markdown work brief (same shape wait\_for\_work delivers): ask, region, source set, thread tail, protocol. Cheaper than get\_annotation when you just need to act.

Volá se jako `get {kind: "capsule", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `list_tags` — List tags [#list_tags]

The tag vocabulary with per-entity usage counts (boards / cards / sessions), label, colour, icon, description — read BEFORE tagging to reuse the operator's vocabulary; list\_boards \{tags} fetches carriers.

Volá se jako `list {kind: "tag", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `share_board` — Mint a share link [#share_board]

Mint a capability share link (the URL is the credential) for the WHOLE board; never on a board carrying drafts; returns \{id, mode, url} — contract: docs \{topic:"organization"}.

*Modul: core*

### `undo` — Undo your last batch [#undo]

Revert your newest batch on a board — your own stack only, the user's ⌘Z never touches it; answers \{applied, label}; applied 0 = nothing of yours to undo.

*Modul: core*

### `import` — Import a truth source [#import]

Turn a truth source (openapi · sqlddl · compose · pgschema) into ONE refreshable diagram card; the server places it, refresh re-parses it later.

*Modul: core*

### `refresh` — Refresh a living card [#refresh]

Re-parse a living-source card — an imported diagram from its stored or new source, a page from pushed markdown — keeping human overrides; answers the card.

*Modul: core*

## Sady a screenshoty [#sets]

### `list_sets` — List artifact sets [#list_sets]

A project's artifact sets (all branches, or one) — newest first, no file lists; each with share URL, version, key, name and title.

Volá se jako `list {kind: "set", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `get_set` — Get artifact set [#get_set]

One artifact set: version, key, name, title, commit, PR, issue, its file list and share URL.

Volá se jako `get {kind: "set", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `get_set_map` — Get document set map [#get_set_map]

A document set from any page: pages in reading order with depth, parent, words, minutes, chapters; hidden pages omitted.

Volá se jako `get {kind: "set_map", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `search_shots` — Search screenshots [#search_shots]

Search the cross-set screens library — every ingested screenshot — by project, journey, surface, branch, kind, free text (route, note, title, label) and time range; newest shot per screen by default, all=true every occurrence. Pulls screens onto boards.

Volá se jako `search {kind: "shot", …}`

*Modul: qa&#x2A; &#x2A;· Jen ke čtení.*

### `rename_set` — Rename artifact set [#rename_set]

Set or clear a set's custom URL name, so …/w/\<ws>/acme/main/\<name> resolves; permission-gated.

*Modul: rare*

### `update_set` — Update set metadata [#update_set]

Edit a set's custom name and/or title; omitted fields stay, an empty string clears.

Volá se jako `update {kind: "set", …}`

*Modul: core*

### `list_components` — List UI components [#list_components]

A project's indexed UI components as compact rows (library, name, kind, summary) — load BEFORE mocking its UI so mockups use the real vocabulary; filter by library in monorepos; empty = `vitrinka project index --components` has not run.

Volá se jako `list {kind: "component", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `get_component` — Get UI component [#get_component]

One indexed component in full: props (names/types), variant vocabulary, summary, source path. Use after list\_components when a mockup needs the exact prop shape.

Volá se jako `get {kind: "component", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

## Fronta práce [#work]

### `wait_for_work` — Wait for annotation work [#wait_for_work]

Drain scoped work once. On idle end the model turn; never re-poll. Background waiting and repeated-poll correction: docs \{topic:"guide:listening"}.

*Modul: core*

### `list_work` — List work items [#list_work]

Annotation work items FIFO: id, board, intent (fix · investigate · refactor · redesign · reshoot · note · other), prompt, source ref, crop URL. ALWAYS SCOPE with board or project + branch — unscoped is every session's backlog; status=open is what waits on an agent.

Volá se jako `list {kind: "work", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `get_annotation` — Get annotation [#get_annotation]

One annotation's full brief: region, intent, prompt revisions, thread (with attachments), fix attempts, explicit ⌖E refs (elements the user pointed at — rank above implicit context), overlapping element context, the card's source set; get\_card\_image \{annotation} SEES the region.

Volá se jako `get {kind: "annotation", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `set_status` — Set annotation status [#set_status]

Move an annotation: "working" on pickup, "in\_review" after the after-shot and reply; never "resolved"; 409 cancelled = withdrawn — contract: docs \{topic:"annotation"}.

*Modul: core*

### `reply` — Reply to annotation [#reply]

Post a reply into an annotation's thread as the agent (pass `agent`): report what was done, ask a clarifying question, or explain a push-back.

*Modul: core*

### `attach_after` — Attach after-shot [#attach_after]

Attach the after-shot to an annotation from a pushed set version — the canonical way to show a fix — contract: docs \{topic:"annotation"}.

*Modul: core*

### `get_card_image` — Get card image [#get_card_image]

See a shot card's pixels + \{width, height, cardVersion} (annotate's source space, not imageWidth/imageHeight); cardIds: survey sheet; run: a review sheet; annotation: its crop — docs \{topic:"annotation"}.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `annotate` — Annotate screens (agent findings) [#annotate]

File your OWN findings as staged annotations on shot cards: THE answer to "review these screens"; regions: source px of cardVersion (docs annotation).

*Modul: core*

### `agent_verdict` — Release or dismiss staged findings [#agent_verdict]

Verdict on a board's staged agent-authored findings: accept releases them to the work wire (the listener drains them), dismiss cancels; every id must be staged on this board.

*Modul: core*

## Otázky [#questions]

### `ask_board` — Ask a board question [#ask_board]

Ask the operator a multiple-choice or text question on a board, optionally anchored; answers stage until ↑ Send — contract: docs \{topic:"composing"}.

*Modul: rare*

### `get_questions` — Get board questions [#get_questions]

A board's FULL question record — options, answer, note rider, ⌖E refs, answeredBy, staged/sent, pivot, retracted — the DURABLE read after a batch left the wire: reconstruct decisions, audit unattended answers, see staged picks. Never drains.

Volá se jako `get {kind: "questions", …}`

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `retract_questions` — Retract open questions [#retract_questions]

Withdraw your own OPEN questions a settled answer invalidated, then compose replacements; answered or staged ones answer a per-item 409 (see results\[]); rows stay in get \{kind: "questions"} as retracted:true; remove the decision tiles with update\_cards yourself.

*Modul: rare*

### `update_question` — Update open question [#update_question]

Rewrite one of your OPEN questions in place (prompt, stakes, options, multiSelect, pivot), keeping id and tile; 409 once answered. answer (+ note) alone records a decision settled off the board — the tile closes, delivered, no Send; update the tile's text with update\_cards.

Volá se jako `update {kind: "question", …}`

*Modul: core*

### `answer_ask` — Answer an info request [#answer_ask]

Stream an answer to an ask-AI item: chunks with partial:true append, the final chunk without it settles ✓ (failed:true ✗); appending after settle 409s.

*Modul: rare*

### `update_brainstorm` — Cancel, reopen or finish a brainstorm [#update_brainstorm]

Change a brainstorm's status: action "plan" is the dry run (the tasks a cancel moves to each project's cancelled state — linked tasks, their epic, its open children — or a reopen restores); cancel or reopen apply the chosen rows; finish marks an epic-less brainstorm Finished.

Volá se jako `update {kind: "brainstorm", …}`

*Modul: core*

## Sezení [#sessions]

### `get_session` — Get session digest [#get_session]

One recorded user-testing session as a compact digest — THE way to traverse it, never raw events: steps (route, action, notes, cardId; folded runs carry seqs), deduped issues with live board status, vitals per route, facets, totals. Address by id or board slug.

Volá se jako `get {kind: "session", …}`

*Modul: qa&#x2A; &#x2A;· Jen ke čtení.*

### `update_session` — Update a session [#update_session]

Close, pause or resume a recorded session, or stamp its pipeline (triaged · fixPr · tested · journeys); done lands it on its journey board; journeys record a run per plan.

Volá se jako `update {kind: "session", …}`

*Modul: qa*

## Úkoly, sprinty a milníky [#tasks]

### `create_task` — Create a task [#create_task]

File a task in a project's task engine: reporter attribution rides your token, subtasks pass parentId, custom fields ride `fields` (list\_fields; epics carry the feature preset); the reply's `url` is the task's ONE link — print it as returned.

Volá se jako `create {kind: "task", …}`

*Modul: pm*

### `update_task` — Update a task [#update_task]

Patch one task — every field optional; explicit zeros clear (parentId 0 detaches, sprintId/milestoneId 0 unassign, "" unsets dates); `labels` and `assignees` REPLACE their sets (label\_task edits incrementally); reporter is immutable.

Volá se jako `update {kind: "task", …}`

*Modul: pm*

### `list_tasks` — List tasks [#list_tasks]

One cursor page of a project's tasks as COMPACT rows in PM working order — EXPLORE, never dump: narrow with `f` first, pass nextCursor back as cursor, read one body with get\_task; summarize\_tasks counts without rows.

Volá se jako `list {kind: "task", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `summarize_tasks` — Summarize tasks [#summarize_tasks]

Exact filtered task counts from the server — total and groups by state, type or priority — without reading rows; more than 100 groups is an error.

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_task` — Get a task [#get_task]

Read one task: body, dates, ids, resolved reporter/assignee actors, custom `fields`, `url` (print as returned); `include` embeds bounded pages — children, links, external, refs (the attachment INDEX; load through read\_task\_ref), events, comments; view:"pickup" is the bounded session start.

Volá se jako `get {kind: "task", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_work_time` — Read work time [#get_work_time]

Automatic human and agent effort for a bounded period — human overlap counted once, parallel agent sessions summed, tool time a subset, waiting/unknown separate — as totals plus task/person/day groups, no raw evidence; scope defaults to mine, team follows workspace permissions.

Volá se jako `get {kind: "work_time", …}`

*Modul: me&#x2A; &#x2A;· Jen ke čtení.*

### `get_work_evidence` — Read work evidence [#get_work_evidence]

One captured work interval plus a bounded newest-first page of its corrections (nextBefore pages back); owner or an authorised manager only (audited), project permission applies; no screenshots, keystrokes or transcripts exist.

Volá se jako `get {kind: "work_evidence", …}`

*Modul: me&#x2A; &#x2A;· Jen ke čtení.*

### `get_work_forecasts` — Read work forecast history [#get_work_forecasts]

A bounded newest-first page of immutable estimate override versions for a task (nextBefore pages back; latest carries the current override; null = automatic, zero = a real estimate); get\_work\_time with taskId gives the effective forecast.

Volá se jako `get {kind: "work_forecasts", …}`

*Modul: me&#x2A; &#x2A;· Jen ke čtení.*

### `create_sprint` — Create a sprint [#create_sprint]

Create an outcome scope with optional dates, a goal and declared coverage. Names are unique per project. Multiple sprints may be active; dates never appear implicitly.

Volá se jako `create {kind: "sprint", …}`

*Modul: pm*

### `update_sprint` — Update a sprint [#update_sprint]

Rename or re-date one of a project's sprints (name collisions answer 409; "" clears a date). There is deliberately no delete.

Volá se jako `update {kind: "sprint", …}`

*Modul: pm*

### `list_sprints` — List sprints [#list_sprints]

List a project's sprints, oldest first.

Volá se jako `list {kind: "sprint", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `list_categories` — List categories [#list_categories]

Page the permanent workspace category vocabulary.

Volá se jako `list {kind: "category", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `create_category` — Create a category [#create_category]

Create a permanent workspace category; requires workspace admin.

Volá se jako `create {kind: "category", …}`

*Modul: pm*

### `update_category` — Update a category [#update_category]

Configure a category using its current version; requires workspace admin.

Volá se jako `update {kind: "category", …}`

*Modul: pm*

### `get_session_scope` — Read a session scope [#get_session_scope]

Read explicit harness binding: unknown, none or sprint.

Volá se jako `get {kind: "session_scope", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `update_session_scope` — Bind a session scope [#update_session_scope]

Bind a harness session to none or a sprint using current version (0 for unknown).

Volá se jako `update {kind: "session_scope", …}`

*Modul: pm*

### `create_scope_resolution` — Resolve a task's scope [#create_scope_resolution]

Resolve feature, child, followup or verified-bug scope without creating a task. Multiple matches require selection; pass the request to task creation atomically.

Volá se jako `create {kind: "scope_resolution", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_scope_readiness` — Read scope readiness [#get_scope_readiness]

Page Before/Ship/After obligations; omit id for project scope. Carry first-page scopeVersion with after; 409 requires restarting.

Volá se jako `get {kind: "scope_readiness", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_now` — Read Now [#get_now]

Read bounded needs-you, active outcomes and next work without requiring Eve.

Volá se jako `get {kind: "now", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_copilot` — Read the project copilot [#get_copilot]

Project front page: Eve's brief and moves, needs you, gating bugs, next, ≤ 3 active-sprint cockpits, next 7 days, activity. Works without Eve.

Volá se jako `get {kind: "copilot", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_cockpit` — Read a sprint cockpit [#get_cockpit]

One sprint's cockpit: goal, counts, obligations per phase, gating bugs, scope change, people load, activity, next 7 days, Eve's brief. id: a sprint id from list \{kind:"sprint"}.

Volá se jako `get {kind: "cockpit", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `list_sprint_members` — List sprint members [#list_sprint_members]

Page unfinished members before explicit carry selection.

Volá se jako `list {kind: "sprint_member", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `create_sprint_start` — Start a sprint [#create_sprint_start]

Start this sprint alongside existing active scopes; no implicit dates or completion.

Volá se jako `create {kind: "sprint_start", …}`

*Modul: pm*

### `create_sprint_transition_preview` — Preview a sprint transition [#create_sprint_transition_preview]

Preview closing a sprint with only selected taskIds; destinationId 0 explicitly means backlog.

Volá se jako `create {kind: "sprint_transition_preview", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `create_sprint_transition` — Apply a sprint transition [#create_sprint_transition]

Apply a reviewed transition preview with a stable requestId; stale scope returns 409.

Volá se jako `create {kind: "sprint_transition", …}`

*Modul: pm*

### `create_release_candidate` — Create a release candidate [#create_release_candidate]

Prepare exact repository revisions and builds for sprint id at scopeVersion. Cutting notes does not prove shipment.

Volá se jako `create {kind: "release_candidate", …}`

*Modul: pm*

### `get_release_candidate` — Read a release candidate [#get_release_candidate]

Read exact candidate identity and currentness.

Volá se jako `get {kind: "release_candidate", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `list_release_candidates` — Page candidates for sprint id [#list_release_candidates]

Page candidates for sprint id.

Volá se jako `list {kind: "release_candidate", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `list_candidate_evidences` — Page original evidence for candidate id [#list_candidate_evidences]

Page original evidence for candidate id.

Volá se jako `list {kind: "candidate_evidence", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `create_candidate_evidence` — Record original candidate evidence [#create_candidate_evidence]

Record original candidate evidence. Agents must set verified:false; authorized humans verify through the browser.

Volá se jako `create {kind: "candidate_evidence", …}`

*Modul: pm*

### `list_shipments` — List shipments [#list_shipments]

Page immutable shipped snapshots; evidence belongs to exact candidate identity.

Volá se jako `list {kind: "shipment", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_history_chapter` — Read a history chapter [#get_history_chapter]

Read a chapter's spread (cover, narrative, numbers, boards, documents) and its first original sources; cursor pages sources and pins the snapshot.

Volá se jako `get {kind: "history_chapter", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `update_history_chapter` — Update a history chapter [#update_history_chapter]

Rewrite a History chapter's narrative (title, body, the narrativeVersion read last) or pin its cover to a screen key from its spread ("" = the server's pick); an edit beats Eve's draft. Returns the chapter and spread.

Volá se jako `update {kind: "history_chapter", …}`

*Modul: pm*

### `create_history_edition` — Create a history edition [#create_history_edition]

Export one History chapter (from) or a range (from…to, at most 60) as a doc artifact on the project's artifacts board; returns its /a/\{id} url.

Volá se jako `create {kind: "history_edition", …}`

*Modul: pm*

### `get_overview` — Read the project board [#get_overview]

The project board: the human-level work in Planned (top-ranked 8 + total), Building, Built and Shipped (newest first, next cursor), the strip (open, shipped this month, live, prod deploy, open release, active goals), newest History chapters (ids for get history\_chapter; chapters = chaptersNext pages older ones). after = Shipped's next cursor: its next page.

Volá se jako `get {kind: "overview", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `create_consolidation_preview` — Preview a consolidation [#create_consolidation_preview]

Preview explicit category and parent edits without changing identity or provenance.

Volá se jako `create {kind: "consolidation_preview", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `create_consolidation` — Apply a consolidation [#create_consolidation]

Apply reviewed consolidation with version checks and an idempotency requestId.

Volá se jako `create {kind: "consolidation", …}`

*Modul: pm*

### `create_milestone` — Create a milestone [#create_milestone]

Create a milestone in a project. Names are unique per project (409 on collision); append-only rows, update\_milestone fixes mistakes.

Volá se jako `create {kind: "milestone", …}`

*Modul: pm*

### `update_milestone` — Update a milestone [#update_milestone]

Rename, re-date or mark reached one of a project's milestones (name collisions 409; "" clears the due date; reached:true stamps reachedAt now and ripens every todo waiting on it, false clears it); no delete.

Volá se jako `update {kind: "milestone", …}`

*Modul: pm*

### `list_milestones` — List milestones [#list_milestones]

List a project's milestones, due-date order.

Volá se jako `list {kind: "milestone", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `ripe_todos` — Ripe todos [#ripe_todos]

The todos whose condition holds NOW (overdue, within lead, milestone, typed `when`), computed server-side; pass branch/task/paths so those fire; ≤10 rows with `why`.

*Modul: me&#x2A; &#x2A;· Jen ke čtení.*

### `complete_todo` — Complete a todo [#complete_todo]

Mark a todo done; a recurring todo advances to its next occurrence and stays open (recurred:true); not a todo → 422.

*Modul: me*

### `mark_deploy` — Mark a deploy [#mark_deploy]

Record that a commit reached an environment (prod, staging, …) — the fact `deployed` todo conditions wait on; idempotent per (project, env, sha); admin+ credential only (a member is 403).

*Modul: rare*

### `create_agenda` — Plan a task on a day [#create_agenda]

Put an EXISTING task on a person's day ("add to today's todos \<task>"): all-day, or a block with at/for; one open item per person and task (repeating answers or moves it); never plan by editing dueAt — free text is a todo task first.

Volá se jako `create {kind: "agenda", …}`

*Modul: me*

### `list_agenda` — List an agenda [#list_agenda]

Days as compact rows: planned items (open ones from earlier days float onto today as "from \<day>"), people's due work and deadlines; `item` is the id update/delete \{kind: "agenda"} take; default you, today + 6 days.

Volá se jako `list {kind: "agenda", …}`

*Modul: me&#x2A; &#x2A;· Jen ke čtení.*

### `update_agenda` — Move or tick an agenda item [#update_agenda]

Move an agenda item to another day, set or clear its time, re-rank it, or tick it: done closes the item only — the task's state never moves (a todo completes through its own door).

Volá se jako `update {kind: "agenda", …}`

*Modul: me*

### `delete_agenda` — Remove an agenda item [#delete_agenda]

Take an item off its day; the task itself is untouched.

Volá se jako `delete {kind: "agenda", …}`

*Modul: me*

### `list_states` — List project states [#list_states]

A project's states in order — key, name, group (backlog | unstarted | started | completed | cancelled), default; a task's `state` is one of these keys, the legacy `status` derives from the group.

Volá se jako `list {kind: "state", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `list_fields` — List custom fields [#list_fields]

A project's custom-field definitions — key, label, kind (text · longtext · select · multiselect · checklist · number · date · url · relation · flow), options, preset, appliesTo, position, required; values live on the task's `fields` and validate against the kind on every write.

Volá se jako `list {kind: "field", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `create_field` — Define a custom field [#create_field]

Add a custom-field definition to a project. Admin only (member-scoped tokens are refused). Key is a snake\_case slug and immutable; fieldKind is immutable. select/multiselect need options.

Volá se jako `create {kind: "field", …}`

*Modul: pm*

### `update_field` — Update a custom field [#update_field]

Patch a custom-field definition by key — label, options, appliesTo, position, required (key and kind are immutable). Admin only.

Volá se jako `update {kind: "field", …}`

*Modul: pm*

### `delete_field` — Delete a custom field [#delete_field]

Remove a custom-field definition AND every value stored under it in the project. Admin only.

Volá se jako `delete {kind: "field", …}`

*Modul: pm*

### `list_labels` — List labels [#list_labels]

A project's labels (name order, max 500), created on demand by create\_task.labels, update\_task.labels (replace) and label\_task (add/remove); `eve-*` are TRIGGER labels — applying one fires that Eve flow.

Volá se jako `list {kind: "label", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `label_task` — Add or remove labels on a task [#label_task]

Add and/or remove labels in one write (created on demand); the reply is the full set; `eve-*` are trigger labels — apply one only to request that flow.

*Modul: pm*

### `create_comment` — Comment on a task [#create_comment]

Append a markdown comment (max 32 KiB) to a task: @mentions land in that person's My work, @eve asks Eve to reply under it, `parentId` makes it a REPLY in that thread (any depth); attribution rides your token.

Volá se jako `create {kind: "comment", …}`

*Modul: pm*

### `list_comments` — List task comments [#list_comments]

Page a task's comments oldest first (keyset: pass nextAfter back as after).

Volá se jako `list {kind: "comment", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `add_task_ref` — Attach a ref to a task [#add_task_ref]

Attach a session, shot, board, file, PR ("owner/repo#n") or run, or link a typed document by URL; refs are versioned — contract: docs \{topic:"tasks"}.

*Modul: pm*

### `upload_task_file` — Upload a text file as task evidence [#upload_task_file]

Store inline TEXT as a typed, versioned attachment (same filename = next version; versionOf continues a lineage); binaries go through `vitrinka task upload` — contract: docs \{topic:"tasks"}.

*Modul: pm*

### `hand_back` — Hand a task back [#hand_back]

The ONE door ending a session's work on a task: `next` lands as steps/gates on it, a child only with task:true; PRINT `rendered` VERBATIM — contract: docs \{topic:"tasks"}.

*Modul: pm*

### `spot` — Spot something out of scope [#spot]

File something spotted but not done here as a child of the bound task or the rolling 'Found during implementation' epic; print the url — contract: docs \{topic:"tasks"}.

*Modul: qa*

### `read_task_ref` — Read a task attachment under a token budget [#read_task_ref]

Load ONE attachment progressively: raw under `budget` tokens, distilled above it or with `question`; read the refs index (meta.tokens, meta.hint) first — contract: docs \{topic:"tasks"}.

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `ask_task` — Ask Eve a question about a task or project [#ask_task]

Ask Eve ONE question about a task (id: cited answer) or a whole project (project: answer + task urls); writes nothing; AI credits; 501 = no backend, don't retry.

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `promote_meeting` — Promote a diary meeting card to a meeting task [#promote_meeting]

Turn ONE meeting card on the signed-in user's diary day board into a `meeting` task in a project (`toWorkspace`/`toProject` name the destination; the project must exist), copying recording and transcript as file refs; owner only; idempotent. Address later calls to THAT workspace.

*Modul: rare*

### `meeting_notes` — Ask Eve for a meeting's notes, decisions and action items [#meeting_notes]

Run Eve's meeting flow over a meeting task's transcript: a versioned notes ref, a summary distill, the decisions checklist, every action item as a PENDING intake draft (no task without a human verdict); board:true composes the meeting board. 409 without a transcript; 501 without an AI backend — do not retry.

*Modul: rare*

### `qa_board` — The qa task's testing board [#qa_board]

Resolve (creating on first need) the board a qa task owns — a Plan section with the journeys diagram plus one section per journey; idempotent; answers \{board, diagram, task}.

*Modul: qa*

### `publish_run` — Publish a test run onto the feature's QA record [#publish_run]

Turn a runner manifest into the feature's QA record in one idempotent pass: qa task, journeys, verdicts, board, refs, failing cases; screenshots via `vitrinka qa run publish`.

*Modul: rare*

### `edit_journey_node` — Edit a journey through its diagram node [#edit_journey_node]

Edit a node of a living journeys diagram — which IS editing the journey task: writes its title and/or steps through the task engine and redraws the card; refused unless the card is a journeys diagram and the journey its qa task's child; other fields: update \{kind: "task"} \{fields}.

*Modul: rare*

### `compose_final` — Compose an epic's final artifact [#compose_final]

Compose or rebuild the epic's feature board from what it carries plus one "\<title> — final" page attached as a versioned `final` ref; a re-run removes only its own cards.

*Modul: pm*

### `compose_brief` — Compose an epic's feature brief [#compose_brief]

Compose or rebuild the epic's feature brief from its brainstorm board: rebuilds the Plan chapter and returns the skeleton; first run uploads version 1 — contract: docs \{topic:"brief"}.

*Modul: pm*

### `bulk_update_tasks` — Bulk-update tasks [#bulk_update_tasks]

Apply ONE patch to up to 200 tasks atomically (state, status, type, priority, assignee, sprint, milestone, parent, dueAt, estimate, project); zero values clear — contract: docs \{topic:"tasks"}.

*Modul: pm*

### `rank_task` — Rank a task [#rank_task]

Move a task in the manual rank order: `before`/`after` name the tasks just above/below it; omit both to move it last; read the order with list \{kind:"task", f:\{order:"rank"}}.

*Modul: pm*

### `list_intake` — List intake drafts [#list_intake]

Pending intake drafts and plan proposals — every project or one — newest first, each with its group (stale · plan · source kind), dedupe verdict and proposal; view summary: counts by project × group, no rows; a closed status reads one project's decided drafts.

Volá se jako `list {kind: "intake", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `intake_verdict` — Decide intake drafts [#intake_verdict]

Resolve intake drafts — one `id` or ≤200 `ids` atomically. Admin/agent token, or the filer declining.

*Modul: pm*

### `propose_tasks` — Propose tasks (intake) [#propose_tasks]

File task DRAFTS through the intake door for a human to accept — deduped against open tasks, each carrying its verdict; hidden until accepted — contract: docs \{topic:"tasks"}.

*Modul: pm*

### `search_tasks` — Search tasks [#search_tasks]

Full-text search over everything a task carries (title, body, fields, refs, comments), relevance-ranked with snippets and matchedIn (a typo also searches its correction); `epic` narrows at any depth, `within` walks one task's tree; an unknown value answers the allowed ones; bounded to 50.

Volá se jako `search {kind: "task", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `search_project` — Search a project [#search_project]

ONE project-scoped search over boards (default), tasks or pages — FTS candidates reranked by title similarity; hits carry \{kind, id, slug, title, subgroup, score, recent, pinned, url}; an empty `q` lists boards most recent first; task hits open through get\_task.

Volá se jako `search {kind: "project", …}`

*Modul: qa&#x2A; &#x2A;· Jen ke čtení.*

### `create_rule` — Create an automation rule [#create_rule]

Create a project automation rule from a typed AST \{trigger, conditions, actions} — vocabulary at GET /api/v1/rules/schema. Rules are created DISABLED: dry\_run\_rule it, then enable with enabled=true. Built-ins (stale-nudge, merged-pr-completes, morning-brief, …) ship enabled. Admin only.

Volá se jako `create {kind: "rule", …}`

*Modul: pm*

### `dry_run_rule` — Dry-run a rule [#dry_run_rule]

Replay a rule over the last N ledger events (event triggers) or the live tasks (schedule triggers) and return what WOULD fire — ids, titles, actions — writing nothing; `ast` tests an edited document in the rule's slot; members stay inside the rule's project.

*Modul: rare&#x2A; &#x2A;· Jen ke čtení.*

### `list_views` — List saved views [#list_views]

List a project's saved views — each is a named filter document (the same shape `?f=` takes).

Volá se jako `list {kind: "view", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `my_work` — My work [#my_work]

The caller's cross-project slice: assigned, created, mentioned (in comments) and overdue tasks — each bounded to 50, summary projection.

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `my_favorites` — My favorites [#my_favorites]

The caller's bookmark tree — roots personal and workspace, nested folders, loose stars as rows \{kind, id, key, title, url, project}, no thumbnails; read at pickup to see what the person keeps close; scope narrows to one root, folder (an id) to one subtree.

*Modul: rare&#x2A; &#x2A;· Jen ke čtení.*

### `favorite` — Star an entity [#favorite]

Star an entity through the ★ button's door — id-keyed kinds by entityId, a project by entityKey; scope defaults to the workspace's star scope; folder is an id or a NAME (created under the root when unknown); starring again re-files, never duplicates. Only what the user asked to keep close.

*Modul: rare*

### `unfavorite` — Unstar an entity [#unfavorite]

Remove a star from the caller's bookmark tree, addressed like `favorite` (entityId for id-keyed kinds, entityKey for a project; scope defaults to the workspace's star scope); a missing star is a no-op; the entity is untouched.

*Modul: rare*

### `create_task_link` — Link two tasks [#create_task_link]

A typed relationship from one task to another: blocks | relates | duplicates | supersedes | custom (custom needs a label ≤ 120 bytes; supersedes marks a revision); at most 256 links per task.

Volá se jako `create {kind: "task_link", …}`

*Modul: pm*

### `delete_task_link` — Delete a task link [#delete_task_link]

Remove one relationship by its link id.

Volá se jako `delete {kind: "task_link", …}`

*Modul: pm*

### `delete_task` — Delete a task [#delete_task]

Soft-delete a task and trash its board projections in one transaction. A parent with live subtasks is refused (409) — reparent or delete them first.

Volá se jako `delete {kind: "task", …}`

*Modul: pm*

### `get_brief` — The project brief [#get_brief]

The project home as an agent reads it: now (overdue · yours in motion · blocked), next with a `why` each, blocked, since (changes since you last looked), people with live runs, the sprint ledger, Eve's narration, pending proposals — narrow with `since` and `limit`.

Volá se jako `get {kind: "brief", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `list_proposals` — List Eve's plan proposals [#list_proposals]

A project's pending plan proposals (the brief's short list): intake drafts carrying a typed proposal \{op: split | reorder | estimate | close | merge, target, reason}; the complete paged read is list \{kind: "intake", group: "plan"} (and "stale"); nothing changes until proposal\_verdict.

Volá se jako `list {kind: "proposal", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `proposal_verdict` — Accept or decline a plan proposal [#proposal_verdict]

Resolve one of Eve's plan proposals: accept applies it through the engine doors and closes the draft; decline is an intake decline. Admin/agent token, or its filer to decline.

*Modul: pm*

## Revize [#review]

### `request_review` — Request AI review pass [#request_review]

Compatibility name for the judge pipeline: start a version-pinned review pass, optionally scoped to a section or journey. Findings are audited and await explicit filing. Prefer review\_judge + review\_judgments. 409 = pass running; 422 = no reviewable image cards.

*Modul: rare*

### `review_brief` — The review brief [#review_brief]

The team's review rubric as one prompt block: the preamble, one block per enabled rule (built-in ▸ workspace ▸ project), an optional persona seat — what a review pass receives.

*Modul: qa&#x2A; &#x2A;· Jen ke čtení.*

### `review_plan` — Plan a review run [#review_plan]

Plan a review over boards; sheets: get\_card\_image \{run, sheet}; \{run}: receipt; \{run, sight}: echo sheet 1's code (docs review).

*Modul: rare*

### `review_stats` — Review verdict statistics [#review_stats]

Review outcomes per rule and agent/model (filed, accepted, dismissed, staged, dismissRate) plus bounded audit samples; usage receipts are separate; check jobsScanned/truncated first.

*Modul: rare&#x2A; &#x2A;· Jen ke čtení.*

### `review_judge` — Judge captured screens [#review_judge]

Queue Eve's screenshot judge on a board, a set (project/branchSlug/selector: its one board) or an eve review\_plan run; immediate unless batch; verdicts in review\_judgments; a run stages its failures.

*Modul: rare*

### `review_job` — Read or act on a review job [#review_job]

Read, retry or export one review job; file a judgment or a human's feedback (by zero-based index); post-fix audits are review\_verify.

*Modul: rare*

### `review_judge_settings` — Read or update judge routing [#review_judge_settings]

Read project judge routing or update it as an admin (read first, keep untouched values): model judges, auditModel audits independently, ruleModels override per rule; no combined score; provider batch is explicit.

*Modul: rare*

### `review_judgments` — Read review judgments [#review_judgments]

A board's compact version-pinned judge jobs, per-rule triage and audit dimensions, insufficient-evidence and failed jobs included; no pixels.

*Modul: qa&#x2A; &#x2A;· Jen ke čtení.*

### `review_verify` — Verify a review finding [#review_verify]

Link a newer capture to a failed judgment to queue its post-fix audit; answers the audit job.

*Modul: qa*

## Projekty a paměť [#memory]

### `list_projects` — List projects [#list_projects]

The workspace's project registry: name, status (active | system), product flag, counts (tasks, epics, boards, sets, sessions), lastActivity; every other tool names a project by its `project` slug.

Volá se jako `list {kind: "project", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `get_project_settings` — Get project settings [#get_project_settings]

Read project settings before updating.

Volá se jako `get {kind: "project_settings", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `update_project_settings` — Update project settings [#update_project_settings]

Set domains, apps, historyTheme, types or commits. Read first: an omitted section stays, a supplied one is replaced whole (\[] or \{} clears it). Empty historyTheme restores the house look.

Volá se jako `update {kind: "project_settings", …}`

*Modul: pm*

### `get_project_memory` — Get project memory [#get_project_memory]

A project's memory: ranked island rows (complete/omitted/next mark the rest) and the legacy document until absorbed. ALWAYS read first.

Volá se jako `get {kind: "project_memory", …}`

*Modul: pm&#x2A; &#x2A;· Jen ke čtení.*

### `save_project_memory` — Save project memory [#save_project_memory]

Overwrite the legacy memory document (markdown, ≤64 KiB); once absorbed by an island: 409 legacy\_put, kept as a proposal.

*Modul: pm*

### `transfer_project` — Transfer a project to another workspace [#transfer_project]

Copy a project into another workspace you own (OWNER of both; agent tokens refused): dryRun first; idempotent; a colliding board slug or set key is 409 unless merge; source kept.

*Modul: rare*

### `merge_project` — Merge a project into another project of the same workspace [#merge_project]

Merge one project INTO another of the workspace (tasks with history, boards, sets, sessions, reports, releases, memory); the source stays an alias for old links. No dryRun IS a dry run — read the report; applying is an owner-person's call (agent → 403).

*Modul: rare*

## Šablony [#templates]

### `save_template` — Save board template [#save_template]

Save a reusable board template (upsert by name) from a compose-shaped body (\{\{slot}} placeholders become params) or board + section (a live subtree); compose\_board \{template, params} instantiates, get\_templates lists.

*Modul: rare*

### `get_templates` — List board templates [#get_templates]

The board template library: built-in skeletons plus saved registry templates with \{\{param}} slots. No argument → the index; name → that template; all:true → everything.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

## Předvolby [#preferences]

### `set_preferences` — Set user preferences [#set_preferences]

Read or change the operator's PERSONAL UI preferences (appearance scales, uiFont, wirePanelWidth, behavior toggles): no arguments reads values plus spec; \{"prefs": \{key: value}} merge-patches — numbers clamp, unknown keys reject the patch (422), changes apply live.

*Modul: rare*

## Artefakty [#artifacts]

### `docs` — Docs [#docs]

This deploy's layered reference: element kinds, board card kinds, kit components, guides and the `kind` contracts. No topic → the index; one topic → its page; "family:topic" disambiguates.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `artifact_docs` — Artifact docs [#artifact_docs]

Alias of `docs`; prefer `docs`.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `read_element` — Read element context [#read_element]

Read one element with its content revision: a paginated outline with JSON Pointer paths by default, exact values with paths, or view=full.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

### `edit_element` — Edit element content [#edit_element]

Apply 1–100 ordered JSON Pointer edits (add · replace · remove) to an AI-layer element; the revision is checked (409 on conflict); returns the new revision.

*Modul: core*

## Ledger a analytika [#ledger]

### `query` — Query the ledger [#query]

Run ONE read-only SELECT over the workspace ledger and facts (agent\_calls, ai\_usage, boards, board\_cards, sets, project\_settings, tasks, task\_events, task\_labels); 1000 rows, 5 s, `?` params; owner only.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*

## Odkazy [#search]

### `resolve_url` — Resolve an app URL [#resolve_url]

Turn a pasted vitrinka URL (task, project, board, card page) into the entity it names in any workspace you belong to: kind, workspace, title, canonical `url`, `foreign`; 404 if unseen.

*Modul: core&#x2A; &#x2A;· Jen ke čtení.*
