{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_92tfq469ebzx","handle":"zerowidth-napkin","url":"https://wellknown.network/agents/zerowidth-napkin","links":{"self":"https://wellknown.network/agents/zerowidth-napkin/record.json","html":"https://wellknown.network/agents/zerowidth-napkin","markdown":"https://wellknown.network/agents/zerowidth-napkin/record.md","api":"https://wellknown.network/api/v1/agents/zerowidth-napkin","status":"https://wellknown.network/api/v1/agents/zerowidth-napkin/status","claim":"https://wellknown.network/agents/zerowidth-napkin/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/zerowidth-napkin/claim.json","badge":"https://wellknown.network/agents/zerowidth-napkin/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/zerowidth-napkin/history","tools":"https://wellknown.network/api/v1/agents/zerowidth-napkin/tools"},"ard":{"identifier":"urn:air:api.zerowidth.ai:server:zerowidth-napkin","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"ZeroWidth Napkin","summary":"Draw boards, write docs and sheets, and build decks with your brand in Napkin.","description":"Draw boards, write docs and sheets, and build decks with your brand in Napkin.","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/napkin","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-07T14:20:42.048693Z","publishedAt":"2026-10-07T14:20:42.048693Z","registryName":"ai.zerowidth/napkin"},"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.presentations","name":"Presentations","confidence":1,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":1,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":1,"provenance":"derived"},{"slug":"code.documentation","name":"Code Documentation","confidence":0.583,"provenance":"derived"},{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":0.569,"provenance":"derived"},{"slug":"infra.desktop","name":"Desktop Control","confidence":0.569,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.525,"provenance":"derived"}],"categories":["code","content","data","dev","documents","infra","knowledge"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-22T11:34:01.589Z","lastProbedAt":"2026-10-22T11:34:01.589Z","statusComputedAt":"2026-10-22T11:37:12.830Z","reliability30d":{"probes":50,"successRate":1,"p50Ms":343,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":50,"ok":50,"authBoundaryOk":0,"serviceOk":50,"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-22T11:34:01.589Z","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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"5e8a596cdcc9660af4628575298e95b6a4e9e18ba2da7edf183575d3442c1ba2","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T04:27:35.337Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":248,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"5e8a596cdcc9660af4628575298e95b6a4e9e18ba2da7edf183575d3442c1ba2","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T21:33:59.895Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":387,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T11:26:02.290Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":211,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T02:28:46.519Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":667,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T20:25:20.945Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":477,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T14:24:25.965Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":311,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T07:27:34.876Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":381,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T01:29:27.145Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1246,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T18:32:14.362Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":221,"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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"toolCount":68,"toolsHash":"95b9521920f6cc3c1a3513b894e941c9cf6f983818fe0561e0a5bd5fec0f742f","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":"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":"napkin_boards_list","description":"Lists sketch boards in the active workspace — name, id, kind (sketch / deck), shape count, last activity. Boards are SPATIAL canvases (drawing, diagrams); the m"},{"name":"napkin_boards_get","description":"Returns a board's shapes as data — each with its id, kind, position, size, and text — so you can TARGET one to change or remove with napkin_draw (`updates` / `d"},{"name":"napkin_boards_view","description":"Renders the sketch board to an image and returns it so you can SEE what's drawn — layout, arrows, handwriting-style strokes, sticky notes — not just data about "},{"name":"napkin_boards_update","description":"Edits a board's details: name, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a board yo"},{"name":"napkin_deck_outline","description":"Returns a Napkin deck as a markdown outline — one section per slide in presentation order, with slide titles, text content (bold + bullets preserved), empty lay"},{"name":"napkin_slide_view","description":"Renders a single slide of a Napkin deck to an image — exactly what present mode shows, cropped to the slide. Navigate by 1-based `slide` number in presentation "},{"name":"napkin_boards_create","description":"Creates a blank Napkin board — a sketch (free canvas) or a deck (slides). NOT for written documents: 'draft/write a doc, note, memo' is napkin_docs_create. Use "},{"name":"napkin_deck_write","description":"Creates a deck from a markdown outline — the SAME dialect `napkin_deck_outline` reads back, so any deck you've read shows the format. Decks are SLIDES for prese"},{"name":"napkin_slide_add","description":"Appends one slide to an existing deck. Pick a layout (title | section | title-body | title-lead | two-column | three-column | comparison | statement | quote | c"},{"name":"napkin_slide_fill","description":"Fills a slide's empty layout text areas by NAME — the names `napkin_deck_outline` surfaces as `[empty text stub: \"…\"]`. Pass `texts` mapping those exact names t"},{"name":"napkin_draw","description":"Draws shapes, strokes, and labels on a board — diagram on a sketch, annotate a deck slide — and, via `updates` / `deletes`, changes or removes shapes that are a"},{"name":"napkin_deck_set_theme","description":"Paints every slide of a deck with a theme — slide background, heading and body typefaces, and text colors — in one call, the same as picking it in the deck's th"},{"name":"napkin_slide_update","description":"Changes one slide as a whole: move it to another position in the deck (`moveTo`, 1-based — the other slides shift around it), hide it from the show without dele"},{"name":"napkin_brand_list","description":"Lists the workspace's brand kits: id, name, description, and which one is the workspace's brand (`isDefault`). Most workspaces have one. Use napkin_brand_get to"},{"name":"napkin_brand_get","description":"Reads a brand kit — the workspace's brand unless you name another. READ THIS BEFORE writing or designing anything for the workspace: a deck, a doc, an interface"},{"name":"napkin_brand_check","description":"Finds words the brand says to avoid in a piece of writing, with what to say instead and why. Pass `text`, or a deck (`boardId`) or doc (`docId`) to check its wo"},{"name":"napkin_brand_apply","description":"Restyles a piece in the brand — the workspace's brand unless you name a kit. `deck` (a board id): every slide gets the brand's background, typefaces, and text c"},{"name":"napkin_brand_draft","description":"Creates a new brand kit, or edits one that is NOT the workspace's brand. Use it when someone asks you to put their brand together (from their site, a deck, or w"},{"name":"napkin_brand_fonts","description":"Gets the font files for a kit's typefaces from Google Fonts and keeps them in the kit, so decks, slide pictures and the canvas draw the brand's real typefaces i"},{"name":"napkin_brand_examples","description":"Shows you the pictures in a kit's Examples sections — screenshots of work that gets the brand right — with each one's note on what makes it good, plus the examp"},{"name":"napkin_brand_add_files","description":"Adds pictures to a brand kit section — logo versions, product marks, example screenshots, imagery. Each file comes from a public https `url` (fetched by the ser"},{"name":"napkin_brand_view","description":"Look at the pictures in a brand kit — logos, product marks, footage stills, layout references, examples — before you use them. Without `section` or `names` it l"},{"name":"napkin_deck_export","description":"Exports a deck's slides as PNG files at each slide's real pixels — a square post at 1080×1080, a story at 1080×1920, a leaderboard at 728×90 — ready to upload t"},{"name":"napkin_layouts_list","description":"Lists the slide layouts napkin_deck_compose can build from — the brand kit's own first, then the built-in ones — with when to use each and the slots it takes (`"},{"name":"napkin_deck_compose","description":"Builds a designed deck: each slide is a layout with its slots filled, or HTML and CSS you write; a real browser lays it out, and it becomes an ordinary Napkin d"},{"name":"napkin_docs_list","description":"Lists the workspace's Napkin docs (quick markdown documents — drafts, notes, working text; the LINEAR surface, distinct from boards which are drawing canvases) "},{"name":"napkin_docs_get","description":"Fetch one Napkin doc's full markdown body by id (from napkin_docs_list). Read before editing — napkin_docs_update replaces or appends against the current body."},{"name":"napkin_docs_create","description":"Create a Napkin doc — a markdown DOCUMENT (prose, structure, code blocks), not a drawing canvas (that's napkin_boards_create) and not slides (napkin_deck_write)"},{"name":"napkin_docs_update","description":"Edit a Napkin doc. For a change to existing prose use `edits` — a list of exact find/replace pairs, which is the SAFEST option and the one to reach for by defau"},{"name":"napkin_sheets_list","description":"Lists the workspace's Napkin sheets (multi-tab spreadsheets — the small-data surface) newest first with tab/chart counts. Archived sheets are hidden unless `inc"},{"name":"napkin_sheets_schema","description":"Returns a sheet's tabs as SQL table definitions — CREATE TABLE scripts with row counts (each tab is a table; its header row names the columns; formula cells con"},{"name":"napkin_sheets_query","description":"Runs a SQLite SELECT over a sheet's tabs-as-tables (get the table/column names from napkin_sheets_schema first). Full SQLite dialect: WHERE, GROUP BY, ORDER BY,"},{"name":"napkin_sheets_view_chart","description":"Renders one of a sheet's pinned charts against the LIVE data and returns the image so you can SEE it — the exact chart the user sees. The text part carries `ima"},{"name":"napkin_sheets_set_cells","description":"Sets cells in one tab of a sheet, by A1 address — values or formulas ('=SUM(B2:B9)'). Additive and surgical: only the addressed cells change. Check napkin_sheet"},{"name":"napkin_sheets_add_chart","description":"Adds a LIVE chart to a sheet — its SQL re-runs against the tabs on every view, so it never goes stale. Write the query with napkin_sheets_query first to confirm"},{"name":"napkin_sheets_create","description":"Creates a Napkin sheet (multi-tab spreadsheet), optionally titled. Then populate it with napkin_sheets_set_cells (headers in row 1). Tell the user where it land"},{"name":"napkin_sheets_update","description":"Edits a sheet's details: title, description, visibility, or `archived` (true takes it out of the gallery; false brings it back — the recovery move for a sheet c"},{"name":"napkin_tables_get","description":"A table tab's columns (name, type, choices), its views, and how many records it holds. Read this before writing records so field names and choices match."},{"name":"napkin_tables_query","description":"Records from a table tab, keyed by field name, with optional where / sort / search / limit (max 500). For counts, sums and joins, napkin_sheets_query runs SQL o"},{"name":"napkin_tables_create","description":"Makes a table tab — typed columns, one record per row, with grid, board and form views — in an existing sheet, or in a new sheet when sheetId is omitted. Use a "},{"name":"napkin_tables_add_records","description":"Adds records, each a map of field name → value. Choices by option name (a new name becomes a new option); dates as YYYY-MM-DD; people by user id; checkboxes tru"},{"name":"napkin_tables_update_records","description":"Changes some fields of records by id (from napkin_tables_query). Fields left out keep their values."},{"name":"napkin_tables_delete_records","description":"Deletes records by id. People can undo this in the sheet only while it's open, so confirm with the person first."},{"name":"napkin_tables_add_columns","description":"Adds columns to the end of a table. Existing records leave them empty."},{"name":"napkin_tables_add_view","description":"Adds a saved view everyone sees: a grid (with where / sort), a board (lanes from a select or person column — groupBy), or a form people fill in to add records ("},{"name":"napkin_diagrams_list","description":"Lists the workspace's Napkin diagrams (interactive flowcharts — processes, decision trees, system maps) newest first. Archived diagrams are hidden unless `inclu"},{"name":"napkin_diagrams_get","description":"Fetch one Napkin diagram's mermaid source by id (from napkin_diagrams_list). Read before editing — napkin_diagrams_update replaces the whole source."},{"name":"napkin_diagrams_create","description":"Create a Napkin diagram — an interactive FLOWCHART (process, decision tree, system map), not a doc (napkin_docs_create) or drawing canvas (napkin_boards_create)"},{"name":"napkin_diagrams_update","description":"Edit a Napkin diagram: retitle, describe, REPLACE the whole mermaid source, set visibility, or `archived` (true takes it out of the gallery, false brings it bac"},{"name":"napkin_interfaces_list","description":"List the interfaces in a workspace — small self-contained screens (a custom chat, a control panel, a prototype) that run on their own origin and can call the fl"},{"name":"napkin_interfaces_get","description":"Read one interface: its name, the flows it may run (with the published version each is pinned to), and the contents of its files. READ BEFORE EDITING — napkin_i"},{"name":"napkin_interfaces_view","description":"See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote picture"},{"name":"napkin_interfaces_create","description":"Create an interface — a small screen of its own the user can open and send to people. Use when someone asks for a custom chat UI, a little tool, or a prototype "},{"name":"napkin_interfaces_write","description":"Write one file of an interface. Use `edits` — exact find/replace pairs — which is the SAFEST option and the one to reach for by default: it leaves everything yo"},{"name":"napkin_interfaces_publish","description":"Save where an interface is now as a numbered version. Share links point at a published version, so what someone was sent doesn't change while work continues. Do"},{"name":"napkin_interfaces_grant","description":"Set what an interface may run — flows and shims, each pinned to a published version. This is the interface's ONLY reach into the workspace, and it replaces the "},{"name":"napkin_interfaces_grant_data","description":"Set the sheet tables, Ledger metrics and Workbench Tasks an interface may use (ADR 0085, 0086), replacing the whole list. Tables: access read, add (read and add"},{"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"},{"name":"workspace_files_save_from_chat","description":"Save a picture the user attached in THIS conversation to the workspace's files, in the Home folder \"From chat\", and get back its file id. Use it when the user w"}],"package":null,"toolSurface":{"id":"ts_zc799jsn6b8y","endpointId":"ep_zrgxqvftjwu3","hash":"5e8a596cdcc9660af4628575298e95b6a4e9e18ba2da7edf183575d3442c1ba2","toolCount":68,"serverName":"zerowidth-mcp","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-22T04:27:35.341Z","lastSeenAt":"2026-10-22T11:34:01.596Z","observations":2,"toolNames":["search_docs","get_doc","list_docs","comments_list","comments_create","comments_resolve","napkin_boards_list","napkin_boards_get","napkin_boards_view","napkin_boards_update","napkin_deck_outline","napkin_slide_view","napkin_boards_create","napkin_deck_write","napkin_slide_add","napkin_slide_fill","napkin_draw","napkin_deck_set_theme","napkin_slide_update","napkin_brand_list","napkin_brand_get","napkin_brand_check","napkin_brand_apply","napkin_brand_draft","napkin_brand_fonts","napkin_brand_examples","napkin_brand_add_files","napkin_brand_view","napkin_deck_export","napkin_layouts_list","napkin_deck_compose","napkin_docs_list","napkin_docs_get","napkin_docs_create","napkin_docs_update","napkin_sheets_list","napkin_sheets_schema","napkin_sheets_query","napkin_sheets_view_chart","napkin_sheets_set_cells","napkin_sheets_add_chart","napkin_sheets_create","napkin_sheets_update","napkin_tables_get","napkin_tables_query","napkin_tables_create","napkin_tables_add_records","napkin_tables_update_records","napkin_tables_delete_records","napkin_tables_add_columns","napkin_tables_add_view","napkin_diagrams_list","napkin_diagrams_get","napkin_diagrams_create","napkin_diagrams_update","napkin_interfaces_list","napkin_interfaces_get","napkin_interfaces_view","napkin_interfaces_create","napkin_interfaces_write","napkin_interfaces_publish","napkin_interfaces_grant","napkin_interfaces_grant_data","search_workspace","entity_tags_get","entity_tags_browse","entity_tags_set","workspace_files_save_from_chat"],"distinctSurfaces":9},"endpointFacts":[{"id":"ep_zrgxqvftjwu3","url":"https://api.zerowidth.ai/mcp/x/napkin","type":"mcp_streamable_http","factsCheckedAt":"2026-10-14T11:21:17.606Z","auth":{"observedAt":"2026-10-14T11:21:17.732Z","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-14T11:21:17.747Z","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":57,"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/napkin","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.zerowidth%2Fnapkin","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-22T11:39:52.277Z"}