Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "search_docs" and "search_workspace"
⟨27 unchanged words⟩ Workbench, Caliper, Prism, Ledger, Napkin,zv1the assistant), an API behavior, or a policy. ⟨9 unchanged words⟩
⟨65 unchanged words⟩ sheet","diagram","interface","change","field","study","metric","folder"],"type":"string"},"minItems" ⟨60 unchanged words⟩
Changed the definition of "search_workspace"
Findsentities across everyanythingtoolinbythenameworkspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compass pages and changes, Caliper datasets, evals, rubrics, reviews, specs and sources(apps sending agent traces), Ledger entries, Napkin sketches, decks, docs, sheets, diagrams anddecks.interfaces. The same search the person uses in Home.
Changed the definition of "caliper_datasets_add_items", "caliper_datasets_create", "caliper_datasets_delete" and 42 more
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Add items to a Caliper dataset"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Create a Caliper dataset"}
Changed the definition of "caliper_datasets_add_items", "caliper_datasets_create", "caliper_datasets_update_item" and 3 more
⟨20 unchanged words⟩ ) instead of creating a parallel dataset. Samethreefour shapes as caliper_datasets_create (Q&A, chat, sequence, simulated). Existing items and their ratings are untouched.
⟨104 unchanged words⟩ :"Sequence: the standard for the FINAL reply. Chat: the standard for the next reply.","type":"string"},"goal":{ ⟨42 unchanged words⟩ ":12,"minimum":2,"type":"integer"},"messages":{"description":"Chat: the conversation so far as role/content messages (user and assistant alternating, an optional system first), 1-50. Every assistant message here is FIXED, written by you, not the model; the flow under test writes only the NEXT reply. End on a user message and put the standard for that reply in expectedResponse. This is the shape for testing the 5th reply of a conversation with the first four baked in.","items":{"properties":{"content":{"type":"string"},"role":{"enum":["system","user","assistant"],"type":"string"}},"required":["role","content"],"type":"object"},"type":"array
Changed the definition of "caliper_evals_update"
⟨42 unchanged words⟩ ,"regressionThreshold":{"anyOf":[{"maximum":51,"minimum":0.050.01,"type":"number"},{"type":" ⟨3 unchanged words⟩ drop vs the previous run that raises analert;alert, on the 0–1 score scale (0.1 = 10 points); null turns alerts off."},"runOnPublish":{ ⟨172 unchanged words⟩
Certificate recorded, valid to 2026-12-19
Authorization not required
Unknown → Live
First tool surface recorded: 45 tools (server version 0.0.0)
https://api.zerowidth.ai/mcp/x/caliper (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 10 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"folderId":{"description":"Only search inside this folder and the folders under it (ids from workspace_folders_browse or a folder hit).","maxLength":100,"minLength":1,"type":"string"},"kinds":{"description":"Restrict to these kinds (flowfile,pagefolder,datasetflow,evalpage,entrydoc,boarddataset, …). Omit to search everything.","items": ⟨11 unchanged words⟩ ,"rubric","review","spec","source","doc","sheet","diagram","interface","change","folder"],"type":"string"},"minItems":1 ⟨10 unchanged words⟩ :"integer"},"q":{"description":"Case-insensitiveWords,substringanymatchedorder,againstcase-insensitive.names/titles.Fewer words find more.","maxLength":200,"minLength":1,"type ⟨33 unchanged words⟩
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Delete a Caliper dataset"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Generate a Caliper dataset from a flow (spends credit)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Generate more items for a Caliper dataset (spends credit)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read a Caliper dataset (items paged)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List Caliper datasets"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Remove one item from a Caliper dataset"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Rename / re-describe / re-scope a Caliper dataset"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Replace one item in a Caliper dataset"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Create a Caliper eval"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Delete a Caliper eval"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read one Caliper eval"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List Caliper evals"}
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Run a Caliper eval"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Stop a running Caliper eval run"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read one eval run (per-item, per-criterion scores)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read the flow trace behind one scored item"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List an eval's runs (status + scores)"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Update a Caliper eval (metadata, schedule, alerts)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Eval performance for a Workbench flow"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Create a Caliper rubric"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Delete a Caliper rubric"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read a Caliper rubric (criteria + scales)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List Caliper rubrics"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Update a Caliper rubric"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List a source's live datasets"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Stop a live dataset"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List Caliper sources"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read a Caliper source over time"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Save a source's conversations to a dataset"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Install a Caliper starter (dataset + rubric)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List Caliper starters (ready-made dataset + rubric pairs)"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read one trace"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List a source's conversations"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Comment on an entity"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read an entity's comment threads"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Resolve or reopen a thread"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Browse the workspace's tags"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Read the tags on entities"}
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Set an entity's tags"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Fetch ZeroWidth doc by slug"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List ZeroWidth docs pages"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Search ZeroWidth docs"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Search the whole workspace"}
⟨9 unchanged words⟩ STEP of setting up evaluation for a flow.ThreeFour item shapes: Q&A (input + optional expectedOutput, the golden answer); CHAT (messages: the conversation so far as role/content user and assistant messages you write, ending on a user message, + expectedResponse for the next reply; the flow writes only that reply, so every earlier assistant turn stays fixed; THE shape for an agent's conversation, built up by depth: a greeting alone, then two messages, then four, each item testing one more reply with the earlier ones baked in); SEQUENCE (turns: 2-20 scripted user messages ⟨109 unchanged words⟩
⟨101 unchanged words⟩ :"Sequence: the standard for the FINAL reply. Chat: the standard for the next reply.","type":"string"},"goal":{ ⟨42 unchanged words⟩ ":12,"minimum":2,"type":"integer"},"messages":{"description":"Chat: the conversation so far as role/content messages (user and assistant alternating, an optional system first), 1-50. Every assistant message here is FIXED, written by you, not the model; the flow under test writes only the NEXT reply. End on a user message and put the standard for that reply in expectedResponse. This is the shape for testing the 5th reply of a conversation with the first four baked in.","items":{"properties":{"content":{"type":"string"},"role":{"enum":["system","user","assistant"],"type":"string"}},"required":["role","content"],"type":"object"},"type":"array"},"persona":{"description":"Simulated: ⟨125 unchanged words⟩
⟨22 unchanged words⟩ — a Q&A item stays Q&A, a chat item stays chat, a sequence stays a sequence — so pass the same shape you read from caliper_datasets_get.ChatRaw items, andrawchat items captured with tool calls in them, can't be edited from here. May return `needs_confirmation`.
⟨27 unchanged words⟩ "description":"The full replacement item, samethreefour shapes as caliper_datasets_create.","properties":{"disposition" ⟨64 unchanged words⟩ :"Sequence: the standard for the FINAL reply. Chat: the standard for the next reply.","type":"string"},"goal":{ ⟨42 unchanged words⟩ ":12,"minimum":2,"type":"integer"},"messages":{"description":"Chat: the conversation so far as role/content messages (user and assistant alternating, an optional system first), 1-50. Every assistant message here is FIXED, written by you, not the model; the flow under test writes only the NEXT reply. End on a user message and put the standard for that reply in expectedResponse. This is the shape for testing the 5th reply of a conversation with the first four baked in.","items":{"properties":{"content":{"type":"string"},"role":{"enum":["system","user","assistant"],"type":"string"}},"required":["role","content"],"type":"object"},"type":"array"},"persona":{"description":"Simulated: ⟨85 unchanged words⟩
⟨120 unchanged words⟩ scores with.","type":"string"},"scenarioId":{"description":"Workbench-flow evals: run every item as this scenario (one of the flow's, from workbench_flows_scenarios_list), so the flow's variables hold that person's values. A run can pick another with caliper_evals_run's scenarioId. Without one, variables run empty unless an item sets them.","type":"string"},"target":{"description":"'workbench_flow' (default; needs ⟨75 unchanged words⟩
⟨31 unchanged words⟩ refund-policy fix'.","type":"string"},"scenarioId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Run as this scenario instead of the eval's own (one of the flow's, from workbench_flows_scenarios_list); null runs with none. Omit to use the eval's. Running the same eval as two scenarios compares how the flow does for each person."},"workspace":{"description":"Workspace slug. Personal tokens ⟨26 unchanged words⟩
⟨12 unchanged words⟩ queue a run whenever the flow publishes),orregressionThreshold (score drop vs the previous run that triggers an alert; null = off), or scenarioId (the scenario runs use). Pass only what changes. The dataset, ⟨36 unchanged words⟩
⟨85 unchanged words⟩ a version.","type":"boolean"},"scenarioId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workbench-flow evals: the scenario every run uses unless a run picks another (one of the flow's, from workbench_flows_scenarios_list); null clears it."},"scheduleDayOfWeek":{"anyOf":[{"maximum":6, ⟨157 unchanged words⟩