{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_kmuk5dwa7cg8","handle":"zerowidth-workbench","url":"https://wellknown.network/agents/zerowidth-workbench","links":{"self":"https://wellknown.network/agents/zerowidth-workbench/record.json","html":"https://wellknown.network/agents/zerowidth-workbench","markdown":"https://wellknown.network/agents/zerowidth-workbench/record.md","api":"https://wellknown.network/api/v1/agents/zerowidth-workbench","status":"https://wellknown.network/api/v1/agents/zerowidth-workbench/status","claim":"https://wellknown.network/agents/zerowidth-workbench/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/zerowidth-workbench/claim.json","badge":"https://wellknown.network/agents/zerowidth-workbench/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/zerowidth-workbench/history","tools":"https://wellknown.network/api/v1/agents/zerowidth-workbench/tools"},"ard":{"identifier":"urn:air:api.zerowidth.ai:server:zerowidth-workbench","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"ZeroWidth Workbench","summary":"Build, run and publish Workbench flows, tasks, shims and knowledge bases.","description":"Build, run and publish Workbench flows, tasks, shims and knowledge bases.","publisher":{"name":"ai.zerowidth","url":null},"homepage":"https://zerowidth.ai/docs/overview/mcp#connect-to-one-product","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.zerowidth.ai/mcp/x/workbench","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-07T14:20:47.052674Z","publishedAt":"2026-10-07T14:20:47.052674Z","registryName":"ai.zerowidth/workbench"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":1,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":1,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"},{"slug":"documents.contracts","name":"Contracts & Legal","confidence":0.977,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":0.977,"provenance":"derived"},{"slug":"productivity.tasks","name":"Tasks & To-do","confidence":0.859,"provenance":"derived"},{"slug":"code.documentation","name":"Code Documentation","confidence":0.583,"provenance":"derived"}],"categories":["code","communication","content","dev","documents","knowledge","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-24T05:28:32.813Z","lastProbedAt":"2026-10-24T05:28:32.813Z","statusComputedAt":"2026-10-24T05:31:38.987Z","reliability30d":{"probes":56,"successRate":1,"p50Ms":355,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":56,"ok":56,"authBoundaryOk":0,"serviceOk":56,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-24T05:28:32.813Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":663,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T22:24:22.078Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":252,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T15:29:08.671Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":268,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T08:29:01.224Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":649,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T01:30:32.495Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":363,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T19:32:10.956Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":271,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T13:28:40.142Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":261,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T06:27:28.514Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":226,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":61,"toolsHash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T00:31:45.795Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":370,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a zv1 routine. Each run executes the flow's latest PUBLISHED revi"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which zv1 handles, who decides at each gate) with the flow and peo"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. Use this once the user's sentence feels settled after you've refined it together — then compile it. The sentence sh"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task. When the task expects an input document (its trigger has an input), pass the user's material as `input` — pasted text, extracted atta"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":60,"toolsHash":"22dcc7e1f5b187cc3ec3ef680a82875c8cb6f27cec04ef6bdf6c9ae917228456","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T17:32:54.048Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":936,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a zv1 routine. Each run executes the flow's latest PUBLISHED revi"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which zv1 handles, who decides at each gate) with the flow and peo"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. Use this once the user's sentence feels settled after you've refined it together — then compile it. The sentence sh"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task. When the task expects an input document (its trigger has an input), pass the user's material as `input` — pasted text, extracted atta"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":60,"toolsHash":"22dcc7e1f5b187cc3ec3ef680a82875c8cb6f27cec04ef6bdf6c9ae917228456","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_docs","description":"Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a Z"},{"name":"get_doc","description":"Fetch the full Markdown body of a specific docs page by its slug. Use this after `search_docs` when the user needs the complete content of a page. No authentica"},{"name":"list_docs","description":"Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling `"},{"name":"workbench_flows_revisions_list","description":"The flow's revision history, newest first: published versions carry a `version` label and note; entries with version null are draft autosaves. Use it to answer "},{"name":"workbench_flows_update","description":"Changes a flow's name, description, visibility, tags, or archived state — the metadata around the flow, NOT its orchestration (prompts and nodes change through "},{"name":"workbench_flows_publish","description":"Snapshots the flow's current DRAFT as a named published version — the version schedules (workbench_flows_schedule), guest share links (workbench_flows_share_cre"},{"name":"workbench_flows_delete","description":"Deletes a flow. Its schedules stop, guest share links die, and evals targeting it can no longer run (their binding shows flowOk: false) — check caliper_flow_per"},{"name":"workbench_flows_fork","description":"Copies a PUBLIC flow from another workspace (a template) into this one as a new draft the user owns. Identify it by its flowUuid (the id on Workbench's public t"},{"name":"workbench_flows_schedules_list","description":"Every schedule on one flow: cadence, whether it's paused (`enabled: false`), the next fire time, delivery, and the last run's status. Read this before workbench"},{"name":"workbench_flows_schedules_update","description":"Changes one schedule: `enabled: false` pauses it (configuration kept), `enabled: true` resumes and recomputes the next fire time from now; `interval` / `schedul"},{"name":"workbench_flows_schedules_delete","description":"Removes a schedule for good. Prefer workbench_flows_schedules_update with enabled: false when the user might want it back. May return `needs_confirmation`."},{"name":"workbench_flows_schedules_run_now","description":"Runs one iteration of a schedule immediately through the real scheduled pipeline (same input, same delivery — the email or channel it normally posts to) without"},{"name":"workbench_flows_shares_list","description":"Every guest link on one flow, newest first: label, whether it's still live, the shareUrl (live links only — dead ones have no URL), expiry, and how many guests "},{"name":"workbench_flows_shares_revoke","description":"Kills one guest link immediately — anyone holding it gets a closed page from then on. Conversations already had stay in the flow's history. Get the shareId from"},{"name":"workbench_flows_scenarios_list","description":"A flow's variables (each {{token}} in an agent's prompt, with its type) and every saved scenario with its values. Read this before creating or updating a scenar"},{"name":"workbench_flows_scenarios_create","description":"Saves a named scenario: values for the flow's variables, e.g. one demo customer. It shows in the test pane's Scenarios menu, and Caliper evals can run as it. Us"},{"name":"workbench_flows_scenarios_update","description":"Renames a scenario or changes its values. `values` MERGES into what's saved: pass only the variables that change, and null to clear one. Get the scenarioId from"},{"name":"workbench_flows_scenarios_delete","description":"Deletes one scenario. A design session running as it goes back to no scenario. May return `needs_confirmation`."},{"name":"workbench_flows_attach_knowledge_base","description":"Attaches a knowledge base to an AGENT flow's draft, the same way picking it in the agent editor does: a docs knowledge base becomes a search tool the model call"},{"name":"workbench_flows_run","description":"Execute a flow and return its outputs synchronously. Runs the draft by default; pass source:\"published\" (optionally a version) to run the live published version"},{"name":"workbench_flows_schedule","description":"Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision"},{"name":"workbench_flows_list","description":"Lists every flow in the active workspace the caller can see. Returns summaries (id, name, visibility, updatedAt) — fetch one with `workbench_flows_get` for the "},{"name":"workbench_executions_get","description":"The flow's stack traces: recent executions with per-node timelines — what each node received, produced, how long it took, and the exact error when one failed. U"},{"name":"workbench_flows_get","description":"One flow. Default `view: summary` lists its nodes and links so you can pick one; `view: node` with a nodeId returns that node's full settings and prompt — read "},{"name":"workbench_flow_authoring_guide","description":"READ THIS FIRST before writing or editing any raw flow orchestration JSON. Covers the document shape, the settings-vs-input-ports rule (temperature, max_tokens,"},{"name":"workbench_node_catalog_get","description":"The ground truth for what nodes exist and what their ports actually are — verify against this instead of recalling. Search by keyword/category for summaries; pa"},{"name":"workbench_flows_scaffold","description":"Creates a runnable first-draft flow from a spec you author: pick the simplest pattern that fits (classifier for read-and-bucket, structurer for transform/extrac"},{"name":"workbench_flows_edit_text","description":"Applies ONE precise text replacement to a flow's DRAFT orchestration — Edit-tool semantics: `find` must be the EXACT current text, copied character-for-characte"},{"name":"workbench_flows_share_create","description":"Creates a no-account guest link where anyone can chat with the flow's latest PUBLISHED revision at workbench's /s/<token> page — the fastest way to put a workin"},{"name":"workbench_kb_get","description":"One knowledge base: name, recipe (docs / tabular / graph), status, document and chunk counts, embedding model, and ingestion settings. Read it to confirm a KB h"},{"name":"workbench_kb_documents_list","description":"Every document ingested into the KB's current content: id, name, type, size, chunk count. Empty for a KB with nothing ingested yet (or one whose ingestion is st"},{"name":"workbench_kb_ingestion_status","description":"The state of one ingestion run started by workbench_kb_add_documents: PENDING / RUNNING / DONE / FAILED, chunks written, and the error when it failed. Read it w"},{"name":"workbench_kb_delete","description":"Deletes a knowledge base and everything in it. Flows that search it will find nothing — check which agents use it (the user knows; the KB page in Workbench list"},{"name":"workbench_kb_document_delete","description":"Removes one ingested document and all its chunks; searches stop returning it at once. Get the documentId from workbench_kb_documents_list. To replace a document"},{"name":"workbench_kb_list","description":"Lists every knowledge base in the active workspace the caller can see. Returns summaries (id, name, description, status, doc/chunk counts, embedding model). Use"},{"name":"workbench_kb_search","description":"Retrieves the most relevant chunks from one knowledge base — the core RAG primitive. `mode:\"semantic\"` (default) embeds the query and ranks by meaning (spends a"},{"name":"workbench_kb_create","description":"Creates an empty knowledge base. Recipe 'docs' (default) for reference material an agent searches at runtime; 'tabular' for spreadsheet-style data queried with "},{"name":"workbench_kb_add_documents","description":"Adds documents to a knowledge base and starts ingestion (chunk + embed; graph KBs also extract entities; tabular KBs load CSV as tables). Text goes inline (Mark"},{"name":"workbench_shim_list","description":"Every shim the user can see: id, name, the question it answers, how many answers and examples it has, and the published version's held-out accuracy (null until "},{"name":"workbench_shim_get","description":"One shim in full: the question, where its inputs come from, every answer with its description and examples, what the shim still needs before it can build, and t"},{"name":"workbench_shim_create","description":"Creates a shim from a name, the question it answers, and its answers. Add examples afterwards with workbench_shim_add_examples — three or more per answer and it"},{"name":"workbench_shim_add_answer","description":"Adds one answer (a label and, optionally, when it applies). The shim needs three examples of it before it builds again with the new answer. May return `needs_co"},{"name":"workbench_shim_add_examples","description":"Adds example inputs to one answer. Write inputs a real person would actually type in the shim's setting — varied in length, register and specifics, each one cle"},{"name":"comments_list","description":"Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the "},{"name":"comments_create","description":"Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval resu"},{"name":"comments_resolve","description":"Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settl"},{"name":"workbench_tasks_get","description":"One Task in full: its sentence, status, the latest saved plan (the clauses — which run flows, which the assistant handles, who decides at each gate) with the fl"},{"name":"workbench_tasks_update","description":"Changes a task's name — the gallery label only. The sentence and plan are versioned and change through workbench_tasks_compile + workbench_tasks_freeze, never h"},{"name":"workbench_tasks_delete","description":"Deletes a task. Runs still in flight are stopped (a gate waiting on someone is closed), and its schedule trigger stops firing; past runs stay in history. Check "},{"name":"workbench_tasks_set_sites","description":"Sets the full list of sites a Task's machine may reach (example.com, or *.example.com for its subdomains; up to 20), for steps that have to use a site like a pe"},{"name":"workbench_tasks_list","description":"Lists the workspace's Tasks — sentence-orchestrated processes — with their sentence, status, and recent runs (id, status, who a waiting run is on). Use this to "},{"name":"workbench_tasks_create","description":"Creates a DRAFT Task from a name + sentence. A Task is for work with people in the loop (someone approves, decides or acts on each item before anything else hap"},{"name":"workbench_tasks_compile","description":"Runs the compiler over a sentence and returns the PROPOSED plan (or repair-grade problems — fix by refining the sentence with the user, not by guessing). Nothin"},{"name":"workbench_tasks_freeze","description":"Freezes a reviewed plan as the Task's next version and activates it. Pass the EXACT plan object a compile returned — never hand-edit it (change the sentence and"},{"name":"workbench_tasks_start","description":"Kicks off a run of a Task and returns at once; the run carries on by itself and is live on the task's page. When the task expects an input document (its trigger"},{"name":"workbench_tasks_run_view","description":"The run's current state rendered as its sentence: what ran (with timings), which path each gate took, what's waiting on whom and for how long, what's coming up."},{"name":"workbench_tasks_act","description":"Records THIS user's verdict on a run that is waiting on them — the labels come from the gate (workbench_tasks_run_view shows them via the plan; a wrong label er"},{"name":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"package":null,"toolSurface":{"id":"ts_c5927qs82mvq","endpointId":"ep_ghdg8mugm672","hash":"bb3e63c4a89a7b83f4869a3eb827448fdd28b3116f7879a0024c2601fb8564b6","toolCount":61,"serverName":"zerowidth-mcp","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-22T06:27:28.526Z","lastSeenAt":"2026-10-24T05:28:32.821Z","observations":8,"toolNames":["search_docs","get_doc","list_docs","workbench_flows_revisions_list","workbench_flows_update","workbench_flows_publish","workbench_flows_delete","workbench_flows_fork","workbench_flows_schedules_list","workbench_flows_schedules_update","workbench_flows_schedules_delete","workbench_flows_schedules_run_now","workbench_flows_shares_list","workbench_flows_shares_revoke","workbench_flows_scenarios_list","workbench_flows_scenarios_create","workbench_flows_scenarios_update","workbench_flows_scenarios_delete","workbench_flows_attach_knowledge_base","workbench_flows_run","workbench_flows_schedule","workbench_flows_list","workbench_executions_get","workbench_flows_get","workbench_flow_authoring_guide","workbench_node_catalog_get","workbench_flows_scaffold","workbench_flows_edit_text","workbench_flows_share_create","workbench_kb_get","workbench_kb_documents_list","workbench_kb_ingestion_status","workbench_kb_delete","workbench_kb_document_delete","workbench_kb_list","workbench_kb_search","workbench_kb_create","workbench_kb_add_documents","workbench_shim_list","workbench_shim_get","workbench_shim_create","workbench_shim_add_answer","workbench_shim_add_examples","comments_list","comments_create","comments_resolve","workbench_tasks_get","workbench_tasks_update","workbench_tasks_delete","workbench_tasks_set_sites","workbench_tasks_list","workbench_tasks_create","workbench_tasks_compile","workbench_tasks_freeze","workbench_tasks_start","workbench_tasks_run_view","workbench_tasks_act","search_workspace","entity_tags_get","entity_tags_browse","entity_tags_set"],"distinctSurfaces":7},"endpointFacts":[{"id":"ep_ghdg8mugm672","url":"https://api.zerowidth.ai/mcp/x/workbench","type":"mcp_streamable_http","factsCheckedAt":"2026-10-24T05:28:32.834Z","auth":{"observedAt":"2026-10-24T05:28:33.193Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-24T05:28:33.260Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.zerowidth.ai","issuer":{"commonName":"WR3","organization":"Google Trust Services"},"validFrom":"2026-09-20T12:44:00.000Z","validTo":"2026-12-19T13:38:14.000Z","daysToExpiry":56,"sanCount":1,"fingerprint256":"F5:D5:C9:D2:D4:FC:C0:C3:A8:31:57:BB:67:B5:17:13:8F:B1:61:A7:9E:54:76:D3:D8:3B:79:50:5E:17:44:FB"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ai.zerowidth/workbench","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.zerowidth%2Fworkbench","firstSeenAt":"2026-10-09T00:19:26.247Z","fetchedAt":"2026-10-21T05:20:11.000Z","normalizedAt":"2026-10-21T05:20:11.000Z"}]},"firstSeenAt":"2026-10-09T00:19:26.247Z","updatedAt":"2026-10-24T05:33:22.339Z"}