protogrid

Search / com.buckybuild/bucky

Bucky

R0· no sign-in

Zoning, parcel, and development feasibility for a street address in Canada and the US.

v1.0.1 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality73needs work
Trust96of 100
Uptime, 30 days100%
Latency p50229 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "bucky": {
      "type": "http",
      "url": "https://buckybuild.com/api/mcp"
    }
  }
}
claude mcp add --transport http bucky https://buckybuild.com/api/mcp
[mcp_servers.bucky]
url = "https://buckybuild.com/api/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bucky": {
      "type": "remote",
      "url": "https://buckybuild.com/api/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "bucky": {
      "type": "http",
      "url": "https://buckybuild.com/api/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=bucky&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYnVja3lidWlsZC5jb20vYXBpL21jcCJ9"
}
{
  "servers": {
    "bucky": {
      "type": "http",
      "url": "https://buckybuild.com/api/mcp"
    }
  }
}
{
  "mcpServers": {
    "bucky": {
      "httpUrl": "https://buckybuild.com/api/mcp"
    }
  }
}
extensions:
  "bucky":
    enabled: true
    name: "bucky"
    type: streamable_http
    uri: "https://buckybuild.com/api/mcp"
    timeout: 300

Quality 73 / 100needs work

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations15 of 15 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints14 of 15 tools declare all four hints; missing: uiGetAnalysisStatus (openWorldHint)
  • warn
    tools.token_costabout 12,602 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes43 tool changes in 30 days
  • fail
    stability.rug_pull3 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

15 tools, about 12,602 tokens to load them all · tool set fff5598067e2 · tools last changed 2026-10-17 · checked 2026-10-20 15:57 UTC

Tool changes

  • screenLotschangedinput schema
  • getFeasibilitySnapshotchangeddescription
    before

    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`.

    after · 76% of words in common

    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.

  • screenLotschangedinput schema
  • getFeasibilitySnapshotchangedinput schema
  • uiGetAnalysisStatuschangedinput schema
  • cityInventorychangedinput schema
  • previewSiteCoveragechangedinput schema
  • submitBuckyFeedbackchangedinput schema
  • produceProjectReportchangedinput schema
  • setProjectMapListingchangedinput schema

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 96 / 100

provenance85
liveness100
freshness100
hygiene100

+repository +dns-namespace +website +reachable +uptime-100% +updated-29d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://buckybuild.com/api/mcp streamable-httpnoneyes100%229 ms2026-07-282026-10-20

Tools (15)

cityInventoryread-onlyPublic 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.
explainFeasibilityStatusread-onlyExplain 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.
getBuckyMcpGuideread-onlyCall 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.
getBylawSectionread-onlyReturn 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`.
getFeasibilitySnapshotread-onlyLook 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.
getProjectContextread-onlyLoad 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.
previewSiteCoverageread-onlyFree 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.
produceProjectReportCompose 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.
runFeasibilityAnalysisEnqueue 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.
saveToProjectCreate 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.
screenLotsFind the lots in one live Bucky city that match a buy box. 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 box (write scope) and returns a CSV link.
setProjectMapListingPut 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.
submitBuckyFeedbackOpen 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.
uiGetAnalysisStatusread-onlyReturn only the analysis `agentStatus` for a project. Cheap enough to poll. Used by the Bucky app view; the model should call getProjectContext instead.
updateProjectPatch 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.buckybuild/bucky",
  "icons": [
    {
      "src": "https://buckybuild.com/web-app-manifest-512x512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    },
    {
      "src": "https://buckybuild.com/icon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "Bucky",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://buckybuild.com/api/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.1",
  "repository": {
    "url": "https://github.com/markbucky/bucky-plugin",
    "source": "github"
  },
  "websiteUrl": "https://buckybuild.com",
  "description": "Zoning, parcel, and development feasibility for a street address in Canada and the US."
}