{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_pcju3h4x3jhj","handle":"zerowidth-ledger","url":"https://wellknown.network/agents/zerowidth-ledger","links":{"self":"https://wellknown.network/agents/zerowidth-ledger/record.json","html":"https://wellknown.network/agents/zerowidth-ledger","markdown":"https://wellknown.network/agents/zerowidth-ledger/record.md","api":"https://wellknown.network/api/v1/agents/zerowidth-ledger","status":"https://wellknown.network/api/v1/agents/zerowidth-ledger/status","claim":"https://wellknown.network/agents/zerowidth-ledger/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/zerowidth-ledger/claim.json","badge":"https://wellknown.network/agents/zerowidth-ledger/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/zerowidth-ledger/history","tools":"https://wellknown.network/api/v1/agents/zerowidth-ledger/tools"},"ard":{"identifier":"urn:air:api.zerowidth.ai:server:zerowidth-ledger","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"ZeroWidth Ledger","summary":"Log decisions with expectations, add evidence, and track metrics in Ledger.","description":"Log decisions with expectations, add evidence, and track metrics in Ledger.","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/ledger","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-07T14:20:39.860587Z","publishedAt":"2026-10-07T14:20:39.860587Z","registryName":"ai.zerowidth/ledger"},"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":"finance.accounting","name":"Accounting","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.992,"provenance":"derived"},{"slug":"code.documentation","name":"Code Documentation","confidence":0.583,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.525,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["code","commerce","content","finance","knowledge","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-21T23:27:41.757Z","lastProbedAt":"2026-10-21T23:27:41.757Z","statusComputedAt":"2026-10-21T23:30:51.834Z","reliability30d":{"probes":47,"successRate":1,"p50Ms":321,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":47,"ok":47,"authBoundaryOk":0,"serviceOk":47,"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-21T23:27:41.757Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":326,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T16:33:01.003Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":257,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T04:26:23.946Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":766,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T22:24:27.993Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":312,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T16:25:03.036Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":302,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T09:24:34.589Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":272,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T02:33:05.096Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":485,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T19:33:29.600Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":196,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T12:31:46.550Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":237,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","serverName":"zerowidth-mcp","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T05:34:42.912Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":613,"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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"toolCount":40,"toolsHash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","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":"ledger_entries_list","description":"The workspace's memory: decisions (changes with pre-registered expectations), lessons (distilled beliefs), and observations (captured facts). CONSULT BEFORE ACT"},{"name":"ledger_entries_get","description":"One entry's full anatomy — the six fields, attached evidence (Caliper runs, measurements, observations), and the supersede chain (what replaced it, or what it r"},{"name":"ledger_entries_create","description":"Records a memory entry. Every entry is a TITLE (`summary`: one short plain sentence) over a BODY (`rationale`: the detail, markdown welcome) — never put the det"},{"name":"ledger_entries_settle","description":"The ritual moment: evidence has landed, the expectation closes, the lesson is written. Only propose settlement when attached evidence actually answers the predi"},{"name":"ledger_metrics_list","description":"The numbers the workspace watches — each with unit, latest reading, and how many open decisions are bound to it. Consult when a user mentions a number that soun"},{"name":"ledger_metrics_create","description":"Create a metric — a number the workspace watches (triage time, weekly signups, cost per run). Check ledger_metrics_list first; names are unique per workspace. W"},{"name":"ledger_metrics_record_reading","description":"Record one observation of a tracked metric. `metricId` accepts a metric id OR its snake_case slug from ledger_metrics_list; an unknown one is a not_found error "},{"name":"ledger_metrics_get","description":"One metric's definition (unit, kind, direction, target, cadence) plus its readings newest first and the open decisions bound to it. Use before answering 'how is"},{"name":"ledger_entries_update","description":"Corrects an entry in place — its title (summary), body (rationale), the pre-registered prediction of an OPEN decision (null clears it), or its facet (filing cat"},{"name":"ledger_entries_retract","description":"Takes an entry out of the curated ledger — THE remedy when you recorded something wrong (a decision that wasn't made, a duplicate, a fact the user corrects). Re"},{"name":"ledger_entries_add_evidence","description":"Records what happened against an open decision — a manual observation the user reports ('the pilot team says triage feels faster'), an implementation note, or a"},{"name":"ledger_metrics_update","description":"Corrects a metric's name, unit, description, kind (measure / event), direction (which way is good), target, cadence, icon, level, or the metrics it drives (its "},{"name":"ledger_metrics_archive","description":"Takes a metric out of the gallery (`archived: true`) or puts it back (`false`). Readings stay, and entries that settled against it still read correctly — this i"},{"name":"ledger_plan_list","description":"Pass `entryId` for one decision's plan items, or `from` + `to` (YYYY-MM-DD, at most about a year apart) for the calendar: decision spans (recorded day → expecta"},{"name":"ledger_plan_add","description":"Adds a plan item to an OPEN decision (the work that carries it out: a post, a launch step, an email). Omit entryId for a standalone date (a holiday, an event yo"},{"name":"ledger_plan_update","description":"Edits one plan item while its decision is open: move it (dueOn), rename it, change the owner (null clears), attach the link, or set status (planned | done | ski"},{"name":"ledger_plan_delete","description":"Removes one plan item while its decision is open, for an item added by mistake or work that's no longer planned. If the work was planned and then dropped, prefe"},{"name":"ledger_metric_presets_list","description":"Ready-made metrics a business can start tracking, each with a unit, a cadence, which direction is good, a business surface (facet), and cross-cutting tags. Reac"},{"name":"ledger_metric_presets_adopt","description":"Creates the named presets as real metrics the workspace owns, tagged from the catalog. Safe to repeat: a preset the workspace already has comes back `already_pr"},{"name":"ledger_metric_starters_list","description":"Starter trees by shape of business or team (subscription software, services firm, online store, sales team, service operation). Each lists its metrics with a le"},{"name":"ledger_metric_starters_adopt","description":"Creates a starter's metrics at their levels and links them. Pass `slugs` to keep only some of its metrics; links are made only where both ends exist. Safe to re"},{"name":"ledger_entries_draft","description":"Writes up to 50 entries as DRAFTS: proposals that stay out of the record until a person confirms each one in Ledger's Drafts view. Use it for entries you found "},{"name":"ledger_feed_sources_list","description":"The connected servers this workspace exposes to you, with the id a feed needs. Their tools appear to you namespaced as `ext__<name>__<tool>` — call one directly"},{"name":"ledger_feeds_list","description":"The standing instructions for how metrics' numbers arrive — which tool each one calls, how often, and how the last run went. Check before proposing a feed so yo"},{"name":"ledger_feeds_preview","description":"Call a connected server's tool once and see what a mapping would pull out of the response — nothing is written and no feed is created. Send no `mapping` for a f"},{"name":"ledger_feeds_create","description":"Freeze a tool call as a metric's standing source: it runs on the cadence you give and records what it finds, with no model involved. `metric` takes an id or a s"},{"name":"ledger_feeds_update","description":"Change a feed's arguments, mapping, cadence, or pause it. Reach for this when a feed's last run reports `empty` (the response shape moved, so the mapping needs "},{"name":"ledger_feeds_run","description":"Run a feed immediately over its own window and record what it finds. Use it right after creating one to prove the mapping works — a run that comes back `empty` "},{"name":"ledger_feeds_backfill","description":"Run the same frozen instruction over a past range, so a metric has history instead of starting the day it was set up. Offer this whenever you create a feed — a "},{"name":"ledger_feeds_delete","description":"Remove a feed. The readings it already wrote stay — the series is the record and outlives the instruction. Prefer pausing with ledger_feeds_update when the user"},{"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":"search_workspace","description":"Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compa"},{"name":"entity_tags_get","description":"Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it "},{"name":"entity_tags_browse","description":"Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag"},{"name":"entity_tags_set","description":"Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not addit"}],"package":null,"toolSurface":{"id":"ts_zgpc7pfwew7y","endpointId":"ep_cg8hqhpm5tf5","hash":"3862952cdcec8f6b71b43e86cc817029fd1612cc2d8fd92ea8695f474e62e905","toolCount":40,"serverName":"zerowidth-mcp","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-16T23:24:15.982Z","lastSeenAt":"2026-10-21T23:27:41.763Z","observations":18,"toolNames":["search_docs","get_doc","list_docs","ledger_entries_list","ledger_entries_get","ledger_entries_create","ledger_entries_settle","ledger_metrics_list","ledger_metrics_create","ledger_metrics_record_reading","ledger_metrics_get","ledger_entries_update","ledger_entries_retract","ledger_entries_add_evidence","ledger_metrics_update","ledger_metrics_archive","ledger_plan_list","ledger_plan_add","ledger_plan_update","ledger_plan_delete","ledger_metric_presets_list","ledger_metric_presets_adopt","ledger_metric_starters_list","ledger_metric_starters_adopt","ledger_entries_draft","ledger_feed_sources_list","ledger_feeds_list","ledger_feeds_preview","ledger_feeds_create","ledger_feeds_update","ledger_feeds_run","ledger_feeds_backfill","ledger_feeds_delete","comments_list","comments_create","comments_resolve","search_workspace","entity_tags_get","entity_tags_browse","entity_tags_set"],"distinctSurfaces":3},"endpointFacts":[{"id":"ep_cg8hqhpm5tf5","url":"https://api.zerowidth.ai/mcp/x/ledger","type":"mcp_streamable_http","factsCheckedAt":"2026-10-21T16:33:01.023Z","auth":{"observedAt":"2026-10-21T16:33:01.527Z","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-21T16:33:01.543Z","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":58,"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/ledger","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.zerowidth%2Fledger","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-21T23:33:06.477Z"}