Bucky
by buckybuild.com · remote · no sign-in to list tools · v1.0.1 · published by com.buckybuild
Zoning, parcel, and development feasibility for a street address in Canada and the US.
24 tools: 3 can delete or cancel things, 2 do something that can't be undone, 11 change things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone2Claude Code: ask: see these tools
- Changes things11Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
29 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http bucky https://buckybuild.com/api/mcpFindings
Matches of fixed checks, with the text they matched.
- HighsaveToProject
The input schema at properties.externalRef.description contains "<system>", a tag of the kind used to mark instructions for the model.
What this check looks forMatched text
inputSchema.properties.externalRef.description: "...an imported project. Canonical form is `<system>:<id>` (e.g. `notion:<page-id>`). Unique..."
- HighupdateProject
The input schema at properties.externalRef.description contains "<system>", a tag of the kind used to mark instructions for the model.
What this check looks forMatched text
inputSchema.properties.externalRef.description: "...an imported project. Canonical form is `<system>:<id>` (e.g. `notion:<page-id>`). Unique..."
- WarngetBuckyMcpGuide
The server marks "getBuckyMcpGuide" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "getBuckyMcpGuide" says "get": a word for reading.
- WarnscreenLots
The server marks "screenLots" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "find": a word for reading.
The server marks "removeSavedFolderItem" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "removeSavedFolderItem" says "remove": a word for removing or ending something.
- InfogetBuckyMcpGuide
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Show 23 more findingsShow fewer
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfogetBylawSection
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfoscreenLots
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfolistSaved
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfosaveLot
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfounsaveLot
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfolistSavedFolders
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfosaveToProject
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfoupdateProject
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- InfocityInventory
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
24 tools
Deletes or cancels 3Claude Code: deny
deleteSavedFolderDelete a private folder by folderId and remove its memberships.1 finding
Why it is in this group
- The name "deleteSavedFolder" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Delete a private folder by folderId and remove its memberships. Its lots stay saved and its projects are kept. Use preview=true first; this MCP tool does not restore deleted folders.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- title: delete Saved Folder
removeSavedFolderItemRemove exactly one saved lot or project from a private folder.2 findings
Why it is in this group
- The name "removeSavedFolderItem" says "remove": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- Warn
The server marks "removeSavedFolderItem" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "removeSavedFolderItem" says "remove": a word for removing or ending something.
Description, as the server wrote it Remove exactly one saved lot or project from a private folder. Pass folderId and target with savedLotId or projectId. The lot stays saved and the project is kept. Use preview=true first.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: remove Saved Folder Item
unsaveLotUnsave one parcel by lotId.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Unsave one parcel by lotId. This also removes that saved lot from every folder. Projects are kept. Use preview=true first; this MCP tool does not provide Undo.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- title: unsave Lot
Can't be undone 2Claude Code: ask
produceProjectReportCompose a project report PDF.1 finding
Why it is in this group
- The description says "irreversible".
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Compose and export a project report PDF
runFeasibilityAnalysisEnqueue a fresh deterministic analysis run for a saved project.1 finding
Why it is in this group
- The name "runFeasibilityAnalysis" says "run": a word for a change.
- The description says "Irreversible".
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- title: Run project feasibility analysis
Changes things 11Claude Code: ask
addSavedFolderItemAdd exactly one saved lot or project to a private folder.1 finding
Why it is in this group
- The name "addSavedFolderItem" says "add": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Add exactly one saved lot or project to a private folder. Pass folderId and target with savedLotId (a save id from listSaved) or projectId. Repeating the same membership is safe. Use preview=true first.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: add Saved Folder Item
cityInventoryPublic city catalogue inventory.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: See what Bucky has mapped for a city
createSavedFolderCreate a named private folder.1 finding
Why it is in this group
- The name "createSavedFolder" says "create": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Create a named private folder. A repeated create makes another folder. Use preview=true first and listSavedFolders to check an uncertain outcome before retrying.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- title: create Saved Folder
getBuckyMcpGuideCall with no arguments on first contact.2 findings
Why it is in this group
- The name "getBuckyMcpGuide" says "get": a word for reading.
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- Warn
The server marks "getBuckyMcpGuide" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "getBuckyMcpGuide" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Get the Bucky MCP guide
renameSavedFolderRename a private folder by folderId.1 finding
Why it is in this group
- The name "renameSavedFolder" says "rename": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Rename a private folder by folderId. Pass name and use preview=true first to inspect the request without writing.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: rename Saved Folder
saveLotSave one parcel by lotId without creating a project or running analysis.1 finding
Why it is in this group
- The name "saveLot" says "save": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Save one parcel by lotId without creating a project or running analysis. Saving it again keeps the same save. Use preview=true first to inspect the request without writing.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: save Lot
saveToProjectCreate a project (`create`), attach lots (`attach_parcels`), or attach a knowledge reference (`attach_reference`).2 findings
Why it is in this group
- The name "saveToProject" says "save": a word for a change.
Findings
- High
The input schema at properties.externalRef.description contains "<system>", a tag of the kind used to mark instructions for the model.
What this check looks forMatched text
inputSchema.properties.externalRef.description: "...an imported project. Canonical form is `<system>:<id>` (e.g. `notion:<page-id>`). Unique..."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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, pass a WGS84 GeoJSON polygon (up to 500 selected parcels), or copy `lot.parcelExternalId` from getFeasibilitySnapshot. Polygon cannot be combined with parcelExternalIds or radiusM. Results report source truncation and attached count. preview=true returns the diff and writes nothing. A write returns a receipt. Not reversible on this surface.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Create or attach to a project
screenLotsFind the lots in one live Bucky city that match a list.2 findings
Why it is in this group
- The description's first verb is "find": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
- Warn
The server marks "screenLots" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "find": a word for reading.
Description, as the server wrote it Find the lots in one live Bucky city that match a list. Pass `city` or `geoDivisionId` with `thesis` (plain words), `criteria` (square feet, dollars), or both; or pass a saved `profileId`. Returns countOutcome (exact, partial, or unavailable), screeningRunId, and selected lots ranked largest first with a pass, fail, or not_available verdict per filter. totalMatches is a compatibility value and can be returned-page size when the total is unavailable. Report a not_available filter; never present the count as filtered by it. The execution preserves selection for optional candidate assessment; assessment candidate counts are separate from search totals. Each lot has `address` for getFeasibilitySnapshot and `parcelExternalId` for saveToProject. save=true saves the list (write scope) and returns a CSV link.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- title: Find lots that match a list
setProjectMapListingPut a project on the public Bucky map, or take it off.1 finding
Why it is in this group
- The name "setProjectMapListing" says "set": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: List or unlist a project on the public map
submitBuckyFeedbackOpen a human-reviewed feedback form and submit it to the Bucky product team.1 finding
Why it is in this group
- The name "submitBuckyFeedback" says "submit": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Open a human-reviewed feedback form and submit it to the Bucky product team. Call only when the user explicitly asks to send feedback, report a problem, suggest an improvement, or praise something. The server asks the MCP client to show the form; nothing is saved unless the human accepts it. Do not use for silent agent self-reporting.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Submit feedback to Bucky
updateProjectPatch project metadata (name, lifecycle status, externalRef).2 findings
Why it is in this group
- The name "updateProject" says "update": a word for a change.
Findings
- High
The input schema at properties.externalRef.description contains "<system>", a tag of the kind used to mark instructions for the model.
What this check looks forMatched text
inputSchema.properties.externalRef.description: "...an imported project. Canonical form is `<system>:<id>` (e.g. `notion:<page-id>`). Unique..."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Update project fields
Only reads 8Claude Code: allow
explainFeasibilityStatusExplain one Bucky coverage or per-fact provenance status and the safe next action.1 finding
Why it is in this group
- The name "explainFeasibilityStatus" says "explain": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Explain a Bucky feasibility status
getBylawSectionReturn the stored bylaw section text behind a snapshot citation.1 finding
Why it is in this group
- The name "getBylawSection" says "get": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Return the stored bylaw section text behind a snapshot citation. Pass `sectionIds` copied from `citations.*.knowledgeSectionId` on getFeasibilitySnapshot. Or pass `geoDivisionId` from `coverage.geoDivisionId`, `zoneCode` from `zone.code`, and `sectionNumbers` such as 3.1 or 3.2. The markdown is the schedule text. A number in the snapshot can still be conditional on frontage, tenure, or adjoining district. Ids or section numbers with no active chunk come back in `missing`.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Get cited bylaw section text
getFeasibilitySnapshotLook up lot, zone, and building envelope for one street address in Canada or the US.1 finding
Why it is in this group
- The name "getFeasibilitySnapshot" says "get": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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. Envelope numbers are extracted ceilings. Call `getBylawSection` with a citation `knowledgeSectionId`, or with `coverage.geoDivisionId`, `zone.code`, and the section number, before treating a number as available on this lot. Do not fetch `zone.bylawSourceUrl`. `lot.minLotFrontageM` is the zone minimum. `lot.lotConformity` compares lot width, lot area, and floor area per unit to those minima. A missing input is `unknown`, never a pass. State every fail before quoting a unit count.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Get feasibility snapshot for an address
getProjectContextLoad one project with analysis envelope, compact agentStatus, document summaries, evidence summaries, the project memory digest, and external_ref when the project was imported from…1 finding
Why it is in this group
- The name "getProjectContext" says "get": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Get project context bundle
listSavedList the signed-in user’s saved lots and projects.1 finding
Why it is in this group
- The name "listSaved" says "list": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it List the signed-in user’s saved lots and projects. Returns at most limit rows (default 50, maximum 200), with folder ids and project stages. Use folderId to read one private folder. Copy a lot entry’s id as savedLotId when filing it; lotId identifies its parcel. A saved lot is not a project.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: list Saved
listSavedFoldersList the signed-in user’s private folders, most recently used first, with item counts.1 finding
Why it is in this group
- The name "listSavedFolders" says "list": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it List the signed-in user’s private folders, most recently used first, with item counts. Returns at most limit rows (default 50, maximum 200). Folders can contain saved lots and projects from different places.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: list Saved Folders
previewSiteCoverageFree preview, no sign-in needed.1 finding
Why it is in this group
- The name "previewSiteCoverage" says "preview": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Free preview, no sign-in needed. For one street address in Canada or the US, it says whether Bucky covers the place and which zoning facts it holds for the lot (lot boundary, zone, height, density, setbacks, permitted uses, overlays, parking): found, partly on file, or not on file. It returns no values: no zone code, heights, setbacks or areas. The lot outline is a shape with no scale. Use it when the user is not signed in and asks what they can build at an address. For the numbers, call getFeasibilitySnapshot. That call asks the user to sign in.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Preview what Bucky has on file for an address
uiGetAnalysisStatusReturn only the analysis `agentStatus` for a project.1 finding
Why it is in this group
- The name "uiGetAnalysisStatus" says "get": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."
Description, as the server wrote it Return only the analysis `agentStatus` for a project. Cheap enough to poll. Used by the Bucky app view; the model should call getProjectContext instead.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- title: Get analysis status
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http bucky https://buckybuild.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__bucky__explainFeasibilityStatus",
"mcp__bucky__getFeasibilitySnapshot",
"mcp__bucky__getBylawSection",
"mcp__bucky__listSaved",
"mcp__bucky__listSavedFolders",
"mcp__bucky__getProjectContext",
"mcp__bucky__previewSiteCoverage",
"mcp__bucky__uiGetAnalysisStatus"
],
"ask": [
"mcp__bucky__getBuckyMcpGuide",
"mcp__bucky__screenLots",
"mcp__bucky__saveLot",
"mcp__bucky__createSavedFolder",
"mcp__bucky__renameSavedFolder",
"mcp__bucky__addSavedFolderItem",
"mcp__bucky__runFeasibilityAnalysis",
"mcp__bucky__saveToProject",
"mcp__bucky__updateProject",
"mcp__bucky__setProjectMapListing",
"mcp__bucky__produceProjectReport",
"mcp__bucky__submitBuckyFeedback",
"mcp__bucky__cityInventory"
],
"deny": [
"mcp__bucky__unsaveLot",
"mcp__bucky__deleteSavedFolder",
"mcp__bucky__removeSavedFolderItem"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as bucky. Review it before you use it.