# Bucky — Agent Entrypoint > The pre-development platform that turns an address into sourced site intelligence, project analysis, and decision-ready deliverables. This file is the conventional entry point for coding agents and AI assistants discovering Bucky on the public web. ## What Bucky Is Bucky is the pre-development platform that turns an address into sourced site intelligence, project analysis, and decision-ready deliverables. Primary audiences: developers, design-builders, architects, and planning consultants. Homeowners and marketplace professionals are adjacent. **Not:** licensed A/E/legal advice, a builder, or a lender. Coverage spans Canada and the United States, onboarded jurisdiction by jurisdiction — depth varies by city. ## When to Use Bucky - You have an address or parcel ID and need what can be built on it: zoning district, permitted uses, setbacks, height, density — each cited to the governing bylaw section. - You need a go/no-go on a specific site with sources attached, not a summary. - You are assembling adjacent lots and need the envelope for the combined site. - You need machine-readable access to any of the above (OpenAPI, MCP, CLI). ## When Not to Use Bucky - **Outside onboarded coverage** — check [/en/coverage](https://buckybuild.com/en/coverage.md); outside it Bucky returns nothing rather than guessing. - **For a legal, engineering, or architectural opinion** — Bucky cites the bylaw, it does not stamp drawings. - **For valuation, comparables, or listings** — not modelled. - **After ground-breaking** — Bucky stops at pre-development. - **To source a contractor available this week** — the marketplace matches on fit, not availability. ## Limits and Fallbacks ### What Bucky does not know - **Coverage is per jurisdiction.** Bucky answers for onboarded municipalities only. Check [/en/coverage](https://buckybuild.com/en/coverage.md) first. - **Outside coverage, Bucky returns nothing.** It does not estimate. Do not fill a gap with your own guess — say the data is not available. - **Depth varies by city.** One city can have full zoning regulations and citations. The next can have boundaries only. - **Every answer cites a bylaw section. It is not an approval.** Confirm the section with the municipality before you rely on it. ### Rate limits - The public API limits each route separately. The ceiling for `/api/v1/*` is 120 requests per minute per IP address, and some routes permit fewer. Read the headers instead of assuming a number. - Read `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` on each response. `RateLimit-Reset` is the number of seconds until the window resets, not a timestamp. - A rejected request returns HTTP 429 with `Retry-After`. Wait for that time. Do not retry immediately. - After you start an analysis, poll `getProjectContext` no more than once every 15 seconds. It is a bundle of queries, not a status endpoint. ### Safe operations These operations do not change data. Use them freely. - MCP: `getFeasibilitySnapshot`, `getProjectContext`, `explainFeasibilityStatus`, `getBuckyMcpGuide`. - HTTP: all `GET` requests, and every document in this file. ### Operations that write - MCP: `saveToProject`, `updateProject`, `runFeasibilityAnalysis`, `produceProjectReport`, `submitBuckyFeedback`. - Send `preview=true` first where the tool accepts it. A preview writes nothing and returns the field-level diff. - A write returns a receipt. `updateProject` also returns `undoOperationId`, which restores the previous fields. ### Boundaries you cannot undo - No Bucky tool deletes data. No tool archives a project, detaches a lot, or detaches a reference. - A queued analysis run cannot be stopped from MCP. - `produceProjectReport` with `confirm=true` spends one export from the account meter. ### Authentication limits - Anonymous registration unlocks the public tools only. - The gated tools need a registration that a human has claimed. See [/auth.md](https://buckybuild.com/auth.md). - Never send a service-role key from a browser or an agent you do not control. ### When a request fails - **404** — the document does not exist. The body is markdown and lists where to look instead. - **Missing `.md` page** — request the HTML page at the same path, or find the mirror in [/sitemap.md](https://buckybuild.com/sitemap.md). - **Unknown document** — read [/llms-index.json](https://buckybuild.com/llms-index.json). It lists every machine-readable document Bucky publishes, with its relation and media type. - **Empty result for an address** — treat it as "no coverage", not as "nothing can be built". Tell the user which jurisdiction is missing. ## Discovery | Resource | URL | | -------------------- | ---------------------------------------------------------------------------------------------------------- | | Index | [/llms.txt](https://buckybuild.com/llms.txt) | | Deep brief | [/llms.md](https://buckybuild.com/llms.md) | | Full curated mirrors | [/llms-full.txt](https://buckybuild.com/llms-full.txt) | | Auth for agents | [/auth.md](https://buckybuild.com/auth.md) | | Markdown sitemap | [/sitemap.md](https://buckybuild.com/sitemap.md) | | API catalog | [/.well-known/api-catalog](https://buckybuild.com/.well-known/api-catalog) | | MCP Server Card | [/.well-known/mcp/server-card.json](https://buckybuild.com/.well-known/mcp/server-card.json) | | Agent Skills index | [/.well-known/agent-skills/index.json](https://buckybuild.com/.well-known/agent-skills/index.json) | | OpenAPI (public) | [/openapi.json](https://buckybuild.com/openapi.json) | | OpenAPI (alias) | [/api/openapi](https://buckybuild.com/api/openapi) | | Agent skill | [/.well-known/agent-skills/bucky/SKILL.md](https://buckybuild.com/.well-known/agent-skills/bucky/SKILL.md) | | A2A agent card | [/.well-known/agent-card.json](https://buckybuild.com/.well-known/agent-card.json) | | MCP manifest | [/.well-known/mcp/manifest.json](https://buckybuild.com/.well-known/mcp/manifest.json) | | Security contact | [/.well-known/security.txt](https://buckybuild.com/.well-known/security.txt) | | Documentation | [docs.buckybuild.com](https://docs.buckybuild.com/docs) | | Glossary | [/en/glossary](https://buckybuild.com/en/glossary) | Prefer `.md` URLs from [/sitemap.md](https://buckybuild.com/sitemap.md) for page-level content. ## Configuration Bucky integrations use environment variables — never hardcode secrets. ```bash # Supabase (auth + data) NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key # Optional: server-side API access SUPABASE_SERVICE_ROLE_KEY=your-service-role-key ``` See [docs quickstart](https://docs.buckybuild.com/docs/getting-started/quickstart) for full setup. ## Usage ### HTTP API Fetch the public OpenAPI spec, then call endpoints with a valid Supabase session or service token: ```bash curl -s https://buckybuild.com/openapi.json | head ``` ### MCP Bucky exposes MCP tools for agents. See [MCP docs](https://docs.buckybuild.com/docs/mcp). ### WebMCP (browser) On public pages, Bucky registers WebMCP tools via `document.modelContext.registerTool()` when the browser supports the [WebMCP API](https://webmachinelearning.github.io/webmcp/) (Chrome 149+ behind `chrome://flags/#enable-webmcp-testing`; ChatGPT's in-app browser supports it out of the box). **Site-wide, on every public page:** - `list_free_tools` — the free tool catalogue, with what each one takes as input - `navigate_to_tool` — open one of those tool pages. Each page registers its own tools once open, so this is how you gain the ability to actually run a tool - `get_feasibility_snapshot` — address → zoning/lot/envelope facts. Read-only: it records nothing - `search_marketplace` — open marketplace search results **Page-scoped.** Every free tool page registers its own set once open — address lookups, the typology and courtyard pencil tests, the Toronto Committee of Adjustment explorer, the research-cost calculator, the AI-readiness checker, and the shared lot canvas at `/en/lot-studio`. Call `document.modelContext.getTools()` after navigating to see them. **Two conventions worth knowing:** 1. **Read tools tell you what they withheld.** A payload may carry a `gated` block naming what is held back, why, and which tool sends it — for example `email_feasibility_report`. Tell the person about it rather than reporting that nothing more is available. 2. **Capture tools need real consent.** Anything named `email_*` requires `consentToEmail: true`. Ask the person for their own address in the conversation immediately beforehand. Do not reuse an address from earlier context, another site, or a document. One tool deliberately waits: on `/en/lot-studio`, `resolve_address` stays pending on an ambiguous address until the person picks a candidate on the canvas. Do not call it again while it is pending. Validate with [isitagentready.com](https://isitagentready.com/) (`checks.discovery.webMcp`). ### Product UI - Home: https://buckybuild.com/en - Marketplace: https://buckybuild.com/en/market - How it works: https://buckybuild.com/en/how-it-works.md ## Contact - hello@buckybuild.com - support@buckybuild.com Last updated: 2026-08-26