[{"slug":"ZV-2026-1924","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html?v=2a11dfb44562 was removed, consumers reading it will break.","summary":"[breaking] Resource ui://bucky/app.html?v=2a11dfb44562 was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=1706d518e6f0 was added.","changes":[{"kind":"resource_removed","tool":"ui://bucky/app.html?v=2a11dfb44562","before":"ui://bucky/app.html?v=2a11dfb44562","detail":"Resource `ui://bucky/app.html?v=2a11dfb44562` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=1706d518e6f0","after":"ui://bucky/app.html?v=1706d518e6f0","detail":"Resource `ui://bucky/app.html?v=1706d518e6f0` was added.","severity":"safe"}],"published_at":"2026-10-07T18:32:17.285Z"},{"slug":"ZV-2026-1779","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html?v=2fe3621e8038 was removed, consumers reading it will break.","summary":"[breaking] Resource ui://bucky/app.html?v=2fe3621e8038 was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=2a11dfb44562 was added.","changes":[{"kind":"resource_removed","tool":"ui://bucky/app.html?v=2fe3621e8038","before":"ui://bucky/app.html?v=2fe3621e8038","detail":"Resource `ui://bucky/app.html?v=2fe3621e8038` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=2a11dfb44562","after":"ui://bucky/app.html?v=2a11dfb44562","detail":"Resource `ui://bucky/app.html?v=2a11dfb44562` was added.","severity":"safe"}],"published_at":"2026-10-04T17:08:16.748Z"},{"slug":"ZV-2026-1674","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: New required field context on cityInventory; requests without it will fail.","summary":"[safe] Description of cityInventory changed (13% word delta). [risky] Optional field cityName was added to cityInventory; may shift model behaviour. [breaking] New required field context on cityInventory; requests without it will fail. [risky] Optional field conversation_id was added to cityInventory; may shift model behaviour. [risky] Optional field geoDivisionId was added to cityInventory; may shift model behaviour. [risky] Optional field lat was added to cityInventory; may shift model behaviour. [breaking] New required field llm_model on cityInventory; requests without it will fail. [risky] Optional field lng was added to cityInventory; may shift model behaviour. [risky] Description of getProjectContext changed (34% word delta). [breaking] New required field include on getProjectContext; requests without it will fail.","changes":[{"kind":"description_changed","tool":"cityInventory","after":"Public city catalogue inventory. Pass exactly one of: cityName, lat and lng together, or geoDivisionId. A city name with multiple matches returns choices; after the user chooses, call again with that candidate geoDivisionId. Never pass a slug. Shows datasets grouped by topic as on file, not loaded yet, unavailable, or not confirmed. This is city coverage, not lot feasibility or operator health. If Bucky has not mapped the place, the result points to recording demand. It does not record demand by itself.","before":"Public city catalogue inventory. Pass a city name or a latitude and longitude. A city name with multiple matches returns choices; after the user chooses, call again with that candidate geoDivisionId. Never pass a slug. Shows datasets grouped by topic as on file, not loaded yet, unavailable, or not confirmed. This is city coverage, not lot feasibility or operator health. If Bucky has not mapped the place, the result points to recording demand. It does not record demand by itself.","detail":"Description of `cityInventory` changed (13% word delta).","severity":"safe","descriptionDelta":0.13235294117647056},{"kind":"input_property_added","path":"inputSchema.properties.cityName","tool":"cityInventory","after":{"type":"string","maxLength":100,"minLength":2},"detail":"Optional field `cityName` was added to `cityInventory`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.context","tool":"cityInventory","after":{"type":"string","description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\""},"detail":"New required field `context` on `cityInventory`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"cityInventory","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `cityInventory`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.geoDivisionId","tool":"cityInventory","after":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"detail":"Optional field `geoDivisionId` was added to `cityInventory`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.lat","tool":"cityInventory","after":{"type":"number","maximum":90,"minimum":-90},"detail":"Optional field `lat` was added to `cityInventory`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"cityInventory","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `cityInventory`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.lng","tool":"cityInventory","after":{"type":"number","maximum":180,"minimum":-180},"detail":"Optional field `lng` was added to `cityInventory`; may shift model behaviour.","severity":"risky"},{"kind":"description_changed","tool":"getProjectContext","after":"Load one project with analysis envelope, compact agentStatus, document summaries, evidence summaries, the project memory digest, and external_ref when the project was imported from another system. Pass `include` for optional sections: tasks, members, insights, capital, visualEvidence. Default is none, so the payload stays the same as a call without include. Writes to those sections stay on the Bucky CLI. You do not need a UUID: pass `project` with the name the user said, or call with neither and the result lists their projects to choose from. Use before composing reports or after scheduling analysis.","before":"Load one project with analysis envelope, compact agentStatus, document summaries, evidence summaries, the project memory digest, and external_ref when the project was imported from another system. You do not need a UUID: pass `project` with the name the user said, or call with neither and the result lists their projects to choose from. Use before composing reports or after scheduling analysis.","detail":"Description of `getProjectContext` changed (34% word delta).","severity":"risky","descriptionDelta":0.3380281690140845},{"kind":"input_required_added","path":"inputSchema.properties.include","tool":"getProjectContext","after":{"type":"array","items":{"enum":["tasks","members","insights","capital","visualEvidence"],"type":"string"},"default":[],"description":"Optional extra sections. Default is none, so the payload matches a call without include. tasks, members, insights, capital, and visualEvidence each reuse the matching product read — they are not separate tools. Writes stay on the Bucky CLI."},"detail":"New required field `include` on `getProjectContext`; requests without it will fail.","severity":"breaking"}],"published_at":"2026-10-01T17:19:13.910Z"},{"slug":"ZV-2026-1474","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: New required field llm_model on explainFeasibilityStatus; requests without it will fail.","summary":"[safe] Tool cityInventory was added. [safe] Description of explainFeasibilityStatus changed (20% word delta). [risky] Optional field conversation_id was added to explainFeasibilityStatus; may shift model behaviour. [breaking] New required field llm_model on explainFeasibilityStatus; requests without it will fail. [risky] Description of getBuckyMcpGuide changed (76% word delta). [risky] Optional field conversation_id was added to getBuckyMcpGuide; may shift model behaviour. [breaking] New required field llm_model on getBuckyMcpGuide; requests without it will fail. [risky] Description of getFeasibilitySnapshot changed (65% word delta). [risky] Optional field conversation_id was added to getFeasibilitySnapshot; may shift model behaviour. [breaking] New required field llm_model on getFeasibilitySnapshot; requests without it will fail. [risky] Optional field conversation_id was added to getProjectContext; may shift model behaviour. [breaking] New required field llm_model on getProjectContext; requests without it will fail. [risky] Optional field conversation_id was added to previewSiteCoverage; may shift model behaviour. [breaking] New required field llm_model on previewSiteCoverage; requests without it will fail. [risky] Description of produceProjectReport changed (37% word delta). [risky] Optional field conversation_id was added to produceProjectReport; may shift model behaviour. [breaking] New required field llm_model on produceProjectReport; requests without it will fail. [risky] Optional field conversation_id was added to runFeasibilityAnalysis; may shift model behaviour. [breaking] New required field llm_model on runFeasibilityAnalysis; requests without it will fail. [risky] Description of saveToProject changed (66% word delta). [risky] Optional field conversation_id was added to saveToProject; may shift model behaviour. [breaking] New required field llm_model on saveToProject; requests without it will fail. [risky] Optional field conversation_id was added to setPr","changes":[{"kind":"tool_added","tool":"cityInventory","detail":"Tool `cityInventory` was added.","severity":"safe"},{"kind":"description_changed","tool":"explainFeasibilityStatus","after":"Explain one Bucky coverage or per-fact provenance status and the safe next action. This is a pure static lookup: it does not inspect an address, retrieve property data, or call a database, geocoder, AI model, or third-party API. Accepts exactly one of: live, live_unavailable, planned_not_live, geo_division_uncatalogued, unseeded_place, geocode_failed, cited, cited_conditional, conditional_unresolved, no_limit_in_bylaw, not_extracted, site_specific_schedule, unverified_default, derived_from_cited, defaulted, missing. Copy the status verbatim from a feasibility result. An unknown status returns this list instead of failing.","before":"Explain one Bucky coverage or per-fact provenance status and the safe next action. This is a pure static lookup: it does not inspect an address, retrieve property data, or call a database, geocoder, AI model, or third-party API. Accepts exactly one of: live, live_unavailable, planned_not_live, geo_division_uncatalogued, unseeded_place, geocode_failed, cited, cited_conditional, conditional_unresolved, no_limit_in_bylaw, not_extracted, site_specific_schedule, unverified_default.","detail":"Description of `explainFeasibilityStatus` changed (20% word delta).","severity":"safe","descriptionDelta":0.19696969696969702},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"explainFeasibilityStatus","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `explainFeasibilityStatus`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"explainFeasibilityStatus","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `explainFeasibilityStatus`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"getBuckyMcpGuide","after":"Call with no arguments on first contact. Optional `role`, `market`, and `scale` answer the first-call questions on a second call. Returns what this session should do next.","before":"Return what this session should do next. Call it with no arguments on first contact. With no token: the tools that work now (including a free site preview), and how to start OAuth by calling a gated tool. Signed in with no projects: three onboarding questions, not the tool catalogue — answer them by calling this tool again with role, market and scale, and it returns one workflow to run. Signed in with projects: the most recent projects and one next call derived from this account's own incompleteness (unresolved geography, missing analysis, or missing report), falling back to getProjectContext when nothing is unfinished. The anonymous path makes no database call. A signed-in call reads this account's project membership and incompleteness flags only — no geocoder, model, third-party API, PostHog, or meter.","detail":"Description of `getBuckyMcpGuide` changed (76% word delta).","severity":"risky","descriptionDelta":0.7608695652173914},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"getBuckyMcpGuide","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `getBuckyMcpGuide`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"getBuckyMcpGuide","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `getBuckyMcpGuide`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"getFeasibilitySnapshot","after":"Look up lot, zone, and building envelope for one street address in Canada or the US. Pass `address`. One address per call; cannot search or compare. Every envelope value carries a `status`. Never report `not_extracted` or `site_specific_schedule` as no limit or as zero — call `explainFeasibilityStatus` first.","before":"Look up what can be built at a specific street address in Canada or the US. Returns the lot (area, width, depth), its zone and permitted uses, and the building envelope (height, storeys, site coverage, FSR, and front/rear/side/flanking setbacks) in one call. Use when someone asks what they can build, how tall, how close to the property line, how big their lot is, or what their property is zoned for. Do not use for questions that are not about a specific address — it resolves one address at a time and cannot search or compare. Every envelope value carries a `status`. A null value with status `no_limit_in_bylaw` means the bylaw sets no limit; a null value with status `not_extracted` means the value is unknown to Bucky; a null value with status `site_specific_schedule` means the zone is governed by a per-site schedule, not a zone table. Never report `not_extracted` or `site_specific_schedule` as \"no limit\" or as zero.","detail":"Description of `getFeasibilitySnapshot` changed (65% word delta).","severity":"risky","descriptionDelta":0.6494845360824743},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"getFeasibilitySnapshot","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `getFeasibilitySnapshot`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"getFeasibilitySnapshot","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `getFeasibilitySnapshot`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"getProjectContext","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `getProjectContext`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"getProjectContext","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `getProjectContext`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"previewSiteCoverage","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `previewSiteCoverage`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"previewSiteCoverage","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `previewSiteCoverage`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"produceProjectReport","after":"Compose a project report PDF. Pass `projectId` or `project`; with neither, the result lists projects and no meter is spent. preview=true composes without spending. confirm=true exports, spends records.exports, and is irreversible. Returns a signed download URL, never PDF bytes.","before":"Pass `projectId`, or `project` with the name the user said; with neither, the result lists their projects and no meter is spent. Compose a grounded report plan, optionally preview without spending export meter (`preview=true`), or confirm export (`confirm=true`) to save the plan and return a short-lived signed download URL plus a receipt — never PDF bytes in the tool result. Confirm spends `records.exports` and is irreversible.","detail":"Description of `produceProjectReport` changed (37% word delta).","severity":"risky","descriptionDelta":0.3653846153846154},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"produceProjectReport","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `produceProjectReport`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"produceProjectReport","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `produceProjectReport`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"runFeasibilityAnalysis","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `runFeasibilityAnalysis`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"runFeasibilityAnalysis","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `runFeasibilityAnalysis`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"saveToProject","after":"Create a project (`create`), attach lots (`attach_parcels`), or attach a knowledge reference (`attach_reference`). Pass `projectId` or `project`; with neither, the result lists projects and writes nothing. For attach_parcels, copy `lot.parcelExternalId` from getFeasibilitySnapshot. preview=true returns the diff and writes nothing. A write returns a receipt. Not reversible on this surface.","before":"Create a new project from a site (`create`), attach lots (`attach_parcels`, using lot.parcelExternalId from getFeasibilitySnapshot), or attach a knowledge reference (`attach_reference`). On `create`, pass `address`, or `lat` and `lng` from getFeasibilitySnapshot when you already have them: coordinates resolve the project to a city, and an address alone is geocoded server-side. Check `geography` on the result — `resolved: false` means the project has no city context and feasibility analysis will have nothing to resolve against, and `coordinateSource: \"geocoded\"` means the server picked the point, so confirm it is the right site. preview=true returns the field-level diff and writes nothing. A write returns a receipt. Not reversible on this surface: MCP cannot archive a project, detach a parcel, or detach a reference. attach_parcels and attach_reference take `projectId`, or `project` with the name the user said; with neither, the result lists their projects and nothing is attached. Create accepts idempotencyKey and externalRef (`<system>:<id>`, e.g. `notion:<page-id>`) so an imported project can be looked up later.","detail":"Description of `saveToProject` changed (66% word delta).","severity":"risky","descriptionDelta":0.6603773584905661},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"saveToProject","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `saveToProject`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"saveToProject","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `saveToProject`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"setProjectMapListing","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `setProjectMapListing`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"setProjectMapListing","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `setProjectMapListing`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"submitBuckyFeedback","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `submitBuckyFeedback`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"submitBuckyFeedback","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `submitBuckyFeedback`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"uiGetAnalysisStatus","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `uiGetAnalysisStatus`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"uiGetAnalysisStatus","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `uiGetAnalysisStatus`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.conversation_id","tool":"updateProject","after":{"type":"string","description":"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."},"detail":"Optional field `conversation_id` was added to `updateProject`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.properties.llm_model","tool":"updateProject","after":{"type":"string","description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess."},"detail":"New required field `llm_model` on `updateProject`; requests without it will fail.","severity":"breaking"},{"kind":"resource_removed","tool":"ui://bucky/app.html?v=632f421b05ca","before":"ui://bucky/app.html?v=632f421b05ca","detail":"Resource `ui://bucky/app.html?v=632f421b05ca` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=2fe3621e8038","after":"ui://bucky/app.html?v=2fe3621e8038","detail":"Resource `ui://bucky/app.html?v=2fe3621e8038` was added.","severity":"safe"}],"published_at":"2026-09-26T16:59:27.353Z"},{"slug":"ZV-2026-1357","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html?v=dd2b57200594 was removed, consumers reading it will break.","summary":"[breaking] Resource ui://bucky/app.html?v=dd2b57200594 was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=632f421b05ca was added.","changes":[{"kind":"resource_removed","tool":"ui://bucky/app.html?v=dd2b57200594","before":"ui://bucky/app.html?v=dd2b57200594","detail":"Resource `ui://bucky/app.html?v=dd2b57200594` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=632f421b05ca","after":"ui://bucky/app.html?v=632f421b05ca","detail":"Resource `ui://bucky/app.html?v=632f421b05ca` was added.","severity":"safe"}],"published_at":"2026-09-23T14:43:27.007Z"},{"slug":"ZV-2026-1338","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html?v=158fb187cf87 was removed, consumers reading it will break.","summary":"[safe] Tool previewSiteCoverage was added. [safe] Description of getBuckyMcpGuide changed (5% word delta). [breaking] Resource ui://bucky/app.html?v=158fb187cf87 was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=dd2b57200594 was added.","changes":[{"kind":"tool_added","tool":"previewSiteCoverage","detail":"Tool `previewSiteCoverage` was added.","severity":"safe"},{"kind":"description_changed","tool":"getBuckyMcpGuide","after":"Return what this session should do next. Call it with no arguments on first contact. With no token: the tools that work now (including a free site preview), and how to start OAuth by calling a gated tool. Signed in with no projects: three onboarding questions, not the tool catalogue — answer them by calling this tool again with role, market and scale, and it returns one workflow to run. Signed in with projects: the most recent projects and one next call derived from this account's own incompleteness (unresolved geography, missing analysis, or missing report), falling back to getProjectContext when nothing is unfinished. The anonymous path makes no database call. A signed-in call reads this account's project membership and incompleteness flags only — no geocoder, model, third-party API, PostHog, or meter.","before":"Return what this session should do next. Call it with no arguments on first contact. With no token: the two tools that work now, and how to start OAuth by calling a gated tool. Signed in with no projects: three onboarding questions, not the tool catalogue — answer them by calling this tool again with role, market and scale, and it returns one workflow to run. Signed in with projects: the most recent projects and one next call derived from this account's own incompleteness (unresolved geography, missing analysis, or missing report), falling back to getProjectContext when nothing is unfinished. The anonymous path makes no database call. A signed-in call reads this account's project membership and incompleteness flags only — no geocoder, model, third-party API, PostHog, or meter.","detail":"Description of `getBuckyMcpGuide` changed (5% word delta).","severity":"safe","descriptionDelta":0.05494505494505497},{"kind":"resource_removed","tool":"ui://bucky/app.html?v=158fb187cf87","before":"ui://bucky/app.html?v=158fb187cf87","detail":"Resource `ui://bucky/app.html?v=158fb187cf87` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=dd2b57200594","after":"ui://bucky/app.html?v=dd2b57200594","detail":"Resource `ui://bucky/app.html?v=dd2b57200594` was added.","severity":"safe"}],"published_at":"2026-09-23T02:21:17.968Z"},{"slug":"ZV-2026-1315","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html?v=48a465c08e93 was removed, consumers reading it will break.","summary":"[risky] Description of getBuckyMcpGuide changed (77% word delta). [risky] Optional field market was added to getBuckyMcpGuide; may shift model behaviour. [risky] Optional field role was added to getBuckyMcpGuide; may shift model behaviour. [risky] Optional field scale was added to getBuckyMcpGuide; may shift model behaviour. [breaking] Resource ui://bucky/app.html?v=48a465c08e93 was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=158fb187cf87 was added.","changes":[{"kind":"description_changed","tool":"getBuckyMcpGuide","after":"Return what this session should do next. Call it with no arguments on first contact. With no token: the two tools that work now, and how to start OAuth by calling a gated tool. Signed in with no projects: three onboarding questions, not the tool catalogue — answer them by calling this tool again with role, market and scale, and it returns one workflow to run. Signed in with projects: the most recent projects and one next call derived from this account's own incompleteness (unresolved geography, missing analysis, or missing report), falling back to getProjectContext when nothing is unfinished. The anonymous path makes no database call. A signed-in call reads this account's project membership and incompleteness flags only — no geocoder, model, third-party API, PostHog, or meter.","before":"Return a static guide to the Bucky MCP surface: what works without sign-in, how to start OAuth by calling a gated tool, how to connect Cursor or the CLI with a real account, and feasibility safety rules. Makes no database, geocoding, AI, or third-party API call.","detail":"Description of `getBuckyMcpGuide` changed (77% word delta).","severity":"risky","descriptionDelta":0.7692307692307692},{"kind":"input_property_added","path":"inputSchema.properties.market","tool":"getBuckyMcpGuide","after":{"enum":["US","CA"],"type":"string","description":"Which country the site is in. Answers \"US or Canada?\"."},"detail":"Optional field `market` was added to `getBuckyMcpGuide`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.role","tool":"getBuckyMcpGuide","after":{"enum":["developer","gc","reviewer"],"type":"string","description":"Who is asking. Answers \"Developer, GC, or municipal reviewer?\"."},"detail":"Optional field `role` was added to `getBuckyMcpGuide`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.scale","tool":"getBuckyMcpGuide","after":{"enum":["single_parcel","portfolio"],"type":"string","description":"One site or several. Answers \"Single parcel, or a portfolio?\"."},"detail":"Optional field `scale` was added to `getBuckyMcpGuide`; may shift model behaviour.","severity":"risky"},{"kind":"resource_removed","tool":"ui://bucky/app.html?v=48a465c08e93","before":"ui://bucky/app.html?v=48a465c08e93","detail":"Resource `ui://bucky/app.html?v=48a465c08e93` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=158fb187cf87","after":"ui://bucky/app.html?v=158fb187cf87","detail":"Resource `ui://bucky/app.html?v=158fb187cf87` was added.","severity":"safe"}],"published_at":"2026-09-22T16:00:15.747Z"},{"slug":"ZV-2026-1266","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html?v=ae1e2640f51d was removed, consumers reading it will break.","summary":"[breaking] Resource ui://bucky/app.html?v=ae1e2640f51d was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=48a465c08e93 was added.","changes":[{"kind":"resource_removed","tool":"ui://bucky/app.html?v=ae1e2640f51d","before":"ui://bucky/app.html?v=ae1e2640f51d","detail":"Resource `ui://bucky/app.html?v=ae1e2640f51d` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=48a465c08e93","after":"ui://bucky/app.html?v=48a465c08e93","detail":"Resource `ui://bucky/app.html?v=48a465c08e93` was added.","severity":"safe"}],"published_at":"2026-09-21T15:44:21.479Z"},{"slug":"ZV-2026-1263","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html?v=3a7dffdec63e was removed, consumers reading it will break.","summary":"[risky] Enum value derived_from_cited added to status on explainFeasibilityStatus. [risky] Enum value defaulted added to status on explainFeasibilityStatus. [risky] Enum value missing added to status on explainFeasibilityStatus. [risky] Description of getProjectContext changed (38% word delta). [risky] Optional field project was added to getProjectContext; may shift model behaviour. [risky] Description of produceProjectReport changed (26% word delta). [risky] Optional field project was added to produceProjectReport; may shift model behaviour. [safe] Field projectId on produceProjectReport is no longer required. [safe] Description of runFeasibilityAnalysis changed (19% word delta). [risky] Optional field project was added to runFeasibilityAnalysis; may shift model behaviour. [safe] Field projectId on runFeasibilityAnalysis is no longer required. [safe] Description of saveToProject changed (11% word delta). [risky] Optional field project was added to saveToProject; may shift model behaviour. [safe] Description of setProjectMapListing changed (10% word delta). [risky] Optional field project was added to setProjectMapListing; may shift model behaviour. [safe] Field projectId on setProjectMapListing is no longer required. [risky] Description of updateProject changed (29% word delta). [risky] Optional field project was added to updateProject; may shift model behaviour. [safe] Field projectId on updateProject is no longer required. [breaking] Resource ui://bucky/app.html?v=3a7dffdec63e was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=ae1e2640f51d was added.","changes":[{"kind":"enum_value_added","path":"inputSchema.properties.status","tool":"explainFeasibilityStatus","after":"derived_from_cited","detail":"Enum value `derived_from_cited` added to `status` on `explainFeasibilityStatus`.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.status","tool":"explainFeasibilityStatus","after":"defaulted","detail":"Enum value `defaulted` added to `status` on `explainFeasibilityStatus`.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.status","tool":"explainFeasibilityStatus","after":"missing","detail":"Enum value `missing` added to `status` on `explainFeasibilityStatus`.","severity":"risky"},{"kind":"description_changed","tool":"getProjectContext","after":"Load one project with analysis envelope, compact agentStatus, document summaries, evidence summaries, the project memory digest, and external_ref when the project was imported from another system. You do not need a UUID: pass `project` with the name the user said, or call with neither and the result lists their projects to choose from. Use before composing reports or after scheduling analysis.","before":"Load one project with analysis envelope, compact agentStatus, document summaries, evidence summaries, the project memory digest, and external_ref when the project was imported from another system. Use before composing reports or after scheduling analysis.","detail":"Description of `getProjectContext` changed (38% word delta).","severity":"risky","descriptionDelta":0.3829787234042553},{"kind":"input_property_added","path":"inputSchema.properties.project","tool":"getProjectContext","after":{"type":"string","maxLength":200,"minLength":1,"description":"Project name to match, when you do not have the UUID. Case-insensitive; an exact name wins over a partial one. Matching more than one lists the candidates instead of guessing."},"detail":"Optional field `project` was added to `getProjectContext`; may shift model behaviour.","severity":"risky"},{"kind":"description_changed","tool":"produceProjectReport","after":"Pass `projectId`, or `project` with the name the user said; with neither, the result lists their projects and no meter is spent. Compose a grounded report plan, optionally preview without spending export meter (`preview=true`), or confirm export (`confirm=true`) to save the plan and return a short-lived signed download URL plus a receipt — never PDF bytes in the tool result. Confirm spends `records.exports` and is irreversible.","before":"Compose a grounded report plan, optionally preview without spending export meter (`preview=true`), or confirm export (`confirm=true`) to save the plan and return a short-lived signed download URL plus a receipt — never PDF bytes in the tool result. Confirm spends `records.exports` and is irreversible.","detail":"Description of `produceProjectReport` changed (26% word delta).","severity":"risky","descriptionDelta":0.26},{"kind":"input_property_added","path":"inputSchema.properties.project","tool":"produceProjectReport","after":{"type":"string","maxLength":200,"minLength":1,"description":"Project name to match, when you do not have the UUID. Case-insensitive; an exact name wins over a partial one. Matching more than one lists the candidates instead of guessing."},"detail":"Optional field `project` was added to `produceProjectReport`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_removed","path":"inputSchema.required.projectId","tool":"produceProjectReport","detail":"Field `projectId` on `produceProjectReport` is no longer required.","severity":"safe"},{"kind":"description_changed","tool":"runFeasibilityAnalysis","after":"Enqueue a fresh deterministic analysis run for a saved project. Pass `projectId`, or `project` with the name the user said; with neither, the result lists their projects and nothing is queued. Returns immediately with `agentStatus` (`queued`, `running`, `current`, `failed`, or `none`) and a receipt id; does not block on completion. Irreversible: a queued run cannot be un-queued from MCP. Re-check with `getProjectContext`, but no more than once every 15 seconds — it is a multi-query bundle, not a status endpoint.","before":"Enqueue a fresh deterministic analysis run for a saved project. Returns immediately with `agentStatus` (`queued`, `running`, `current`, `failed`, or `none`) and a receipt id; does not block on completion. Irreversible: a queued run cannot be un-queued from MCP. Re-check with `getProjectContext`, but no more than once every 15 seconds — it is a multi-query bundle, not a status endpoint.","detail":"Description of `runFeasibilityAnalysis` changed (19% word delta).","severity":"safe","descriptionDelta":0.19047619047619047},{"kind":"input_property_added","path":"inputSchema.properties.project","tool":"runFeasibilityAnalysis","after":{"type":"string","maxLength":200,"minLength":1,"description":"Project name to match, when you do not have the UUID. Case-insensitive; an exact name wins over a partial one. Matching more than one lists the candidates instead of guessing."},"detail":"Optional field `project` was added to `runFeasibilityAnalysis`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_removed","path":"inputSchema.required.projectId","tool":"runFeasibilityAnalysis","detail":"Field `projectId` on `runFeasibilityAnalysis` is no longer required.","severity":"safe"},{"kind":"description_changed","tool":"saveToProject","after":"Create a new project from a site (`create`), attach lots (`attach_parcels`, using lot.parcelExternalId from getFeasibilitySnapshot), or attach a knowledge reference (`attach_reference`). On `create`, pass `address`, or `lat` and `lng` from getFeasibilitySnapshot when you already have them: coordinates resolve the project to a city, and an address alone is geocoded server-side. Check `geography` on the result — `resolved: false` means the project has no city context and feasibility analysis will have nothing to resolve against, and `coordinateSource: \"geocoded\"` means the server picked the point, so confirm it is the right site. preview=true returns the field-level diff and writes nothing. A write returns a receipt. Not reversible on this surface: MCP cannot archive a project, detach a parcel, or detach a reference. attach_parcels and attach_reference take `projectId`, or `project` with the name the user said; with neither, the result lists their projects and nothing is attached. Create accepts idempotencyKey and externalRef (`<system>:<id>`, e.g. `notion:<page-id>`) so an imported project can be looked up later.","before":"Create a new project from a site (`create`), attach lots (`attach_parcels`, using lot.parcelExternalId from getFeasibilitySnapshot), or attach a knowledge reference (`attach_reference`). On `create`, pass `address`, or `lat` and `lng` from getFeasibilitySnapshot when you already have them: coordinates resolve the project to a city, and an address alone is geocoded server-side. Check `geography` on the result — `resolved: false` means the project has no city context and feasibility analysis will have nothing to resolve against, and `coordinateSource: \"geocoded\"` means the server picked the point, so confirm it is the right site. preview=true returns the field-level diff and writes nothing. A write returns a receipt. Not reversible on this surface: MCP cannot archive a project, detach a parcel, or detach a reference. Create accepts idempotencyKey and externalRef (`<system>:<id>`, e.g. `notion:<page-id>`) so an imported project can be looked up later.","detail":"Description of `saveToProject` changed (11% word delta).","severity":"safe","descriptionDelta":0.10576923076923073},{"kind":"input_property_added","path":"inputSchema.properties.project","tool":"saveToProject","after":{"type":"string","maxLength":200,"minLength":1,"description":"Project name to match instead of a UUID, for attach_parcels and attach_reference. Matching more than one lists the candidates instead of guessing. Ignored by create."},"detail":"Optional field `project` was added to `saveToProject`; may shift model behaviour.","severity":"risky"},{"kind":"description_changed","tool":"setProjectMapListing","after":"Put a project on the public Bucky map, or take it off. Pass `projectId`, or `project` with the name the user said; with neither, the result lists their projects and nothing is published. Listing publishes the build-lot centroid, the project name, its zone category, typology and lifecycle status to anyone — signed in or not. Nothing else about the project is published. The project must have a build lot with a centroid; a project that has only an address and no attached build parcel cannot be pinned. Ask the human before listing a site that is not already public knowledge. A client, a friend, or a private residence is theirs to publish, not yours. preview=true returns the current state, the exact pin that would be published, and any privacy warning, and writes nothing. Unlisting removes the pin but does not un-share anything already collected while it was public.","before":"Put a project on the public Bucky map, or take it off. Listing publishes the build-lot centroid, the project name, its zone category, typology and lifecycle status to anyone — signed in or not. Nothing else about the project is published. The project must have a build lot with a centroid; a project that has only an address and no attached build parcel cannot be pinned. Ask the human before listing a site that is not already public knowledge. A client, a friend, or a private residence is theirs to publish, not yours. preview=true returns the current state, the exact pin that would be published, and any privacy warning, and writes nothing. Unlisting removes the pin but does not un-share anything already collected while it was public.","detail":"Description of `setProjectMapListing` changed (10% word delta).","severity":"safe","descriptionDelta":0.09677419354838712},{"kind":"input_property_added","path":"inputSchema.properties.project","tool":"setProjectMapListing","after":{"type":"string","maxLength":200,"minLength":1,"description":"Project name to match, when you do not have the UUID. Case-insensitive; an exact name wins over a partial one. Matching more than one lists the candidates instead of guessing."},"detail":"Optional field `project` was added to `setProjectMapListing`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_removed","path":"inputSchema.required.projectId","tool":"setProjectMapListing","detail":"Field `projectId` on `setProjectMapListing` is no longer required.","severity":"safe"},{"kind":"description_changed","tool":"updateProject","after":"Patch project metadata (name, lifecycle status, externalRef). Pass `projectId`, or `project` with the name the user said; with neither, the result lists their projects and nothing is written. preview=true returns the field-level diff and writes nothing. A write returns a receipt; undoOperationId restores the captured prior fields. Does not archive or delete.","before":"Patch project metadata (name, lifecycle status, externalRef). preview=true returns the field-level diff and writes nothing. A write returns a receipt; undoOperationId restores the captured prior fields. Does not archive or delete.","detail":"Description of `updateProject` changed (29% word delta).","severity":"risky","descriptionDelta":0.2857142857142857},{"kind":"input_property_added","path":"inputSchema.properties.project","tool":"updateProject","after":{"type":"string","maxLength":200,"minLength":1,"description":"Project name to match, when you do not have the UUID. Case-insensitive; an exact name wins over a partial one. Matching more than one lists the candidates instead of guessing."},"detail":"Optional field `project` was added to `updateProject`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_removed","path":"inputSchema.required.projectId","tool":"updateProject","detail":"Field `projectId` on `updateProject` is no longer required.","severity":"safe"},{"kind":"resource_removed","tool":"ui://bucky/app.html?v=3a7dffdec63e","before":"ui://bucky/app.html?v=3a7dffdec63e","detail":"Resource `ui://bucky/app.html?v=3a7dffdec63e` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=ae1e2640f51d","after":"ui://bucky/app.html?v=ae1e2640f51d","detail":"Resource `ui://bucky/app.html?v=ae1e2640f51d` was added.","severity":"safe"}],"published_at":"2026-09-21T14:40:18.917Z"},{"slug":"ZV-2026-1259","server_name":"buckybuild.com","severity":"breaking","title":"buckybuild.com: Resource ui://bucky/app.html was removed, consumers reading it will break.","summary":"[breaking] Resource ui://bucky/app.html was removed, consumers reading it will break. [safe] Resource ui://bucky/app.html?v=3a7dffdec63e was added.","changes":[{"kind":"resource_removed","tool":"ui://bucky/app.html","before":"ui://bucky/app.html","detail":"Resource `ui://bucky/app.html` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://bucky/app.html?v=3a7dffdec63e","after":"ui://bucky/app.html?v=3a7dffdec63e","detail":"Resource `ui://bucky/app.html?v=3a7dffdec63e` was added.","severity":"safe"}],"published_at":"2026-09-21T12:31:17.742Z"}]