Register.
Sign up at app.feasibly.com.au/register with an email address. A key named Dashboard (default) is created automatically on signup, so the dashboard and the API both work immediately.
Docs · Connect & troubleshoot
Everything between "I have an account" and "my client is returning planning data" — including what to do when it isn't.
The connection itself is one URL. This page is the rest: which client needs which step, what each error message actually means, and where our coverage stops.
Step one
Free tier is 20 lookups a month, every month, no credit card. You don't need to create a key by hand — registering makes one for you.
Sign up at app.feasibly.com.au/register with an email address. A key named Dashboard (default) is created automatically on signup, so the dashboard and the API both work immediately.
Your keys live at app.feasibly.com.au/keys. A key looks like feasibly_sk_ followed by 32 hexadecimal characters — 44 characters in total. If what you pasted is shorter than that, it's truncated.
The key travels in the MCP server URL, so anyone who can read that URL can spend your credits. Revoking a key from the dashboard stops it working immediately — issue a separate key per client rather than sharing one everywhere.
Step two
This is the whole connection string. Replace the token with your own key.
MCP server URL
https://mcp.feasibly.com.au/mcp?key=YOUR_API_KEY
The /mcp endpoint reads the key from the ?key= query string. An Authorization: Bearer header works on the REST API but not on the MCP endpoint — if you configure a header instead of the query parameter, the connection fails with a 401.
Each client has a full walkthrough. Claude Code is the one you can do in a single command.
claude_desktop_config.json; the web client adds Feasibly as a custom integration under Settings.mcpServers JSON block in each IDE's config file. Reload the window afterwards.One command, no config file. Quote the URL — the ? and & characters are shell metacharacters and an unquoted URL will be mangled by your shell before Claude Code ever sees it.
claude mcp add --transport http feasibly "https://mcp.feasibly.com.au/mcp?key=YOUR_API_KEY"
That registers the server for the current project. Add --scope user to make it available in every project on the machine. Confirm it landed with claude mcp list, then ask about any Australian address.
Every tool is also an HTTPS endpoint under https://mcp.feasibly.com.au/api/v1/. All of them are POST with a JSON body, and here the Authorization: Bearer header is the preferred form.
curl -X POST "https://mcp.feasibly.com.au/api/v1/lookup" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"12 Smith Street, Brunswick VIC 3056"}'
Full endpoint list, request shapes and the OpenAPI 3.1 spec are in the REST API reference.
What you get
Tier gating is identical across MCP and REST. Only two operations spend credits: a site lookup costs one, and a multi-site comparison costs one per site that actually resolved. Everything else is free to call.
| Tool | What it returns | Tier | Credits |
|---|---|---|---|
lookup_site | The primary lookup: zone, council schedule controls, overlays, permit triggers, envelope, source links. | Free | 1 |
get_zone_rules | Structured rules for a zone code at a given council, without the spatial lookup. | Free | — |
explain_overlay | What an overlay does, its clause reference, and the permit triggers it typically carries. | Free | — |
get_usage | Your plan, remaining monthly credits, daily cap, and when the period resets. | Free | — |
check_subdivision_potential | Yield indicator from the resolved envelope, schedule minimum lot size and lot geometry. | Pro | — |
compare_overlays | Two or more overlays side by side — which permit triggers compound. | Pro | — |
compare_sites | Up to five sites in one structured response. Pipeline triage. | Pro | 1 / site |
generate_report | Branded PDF screening report, returned as a signed URL. | Scale | — |
Starter's advantage over Free is quota and saved history in the dashboard, not extra tools — its tool set is the same four. The REST-only /api/v1/batch endpoint (up to 20 addresses in one call, one credit each) is Pro and above.
Troubleshooting
Each row starts with what you actually see. The error text is quoted from what the server sends, so you can match on it.
Three usual suspects: the URL is missing ?key=, the path isn't /mcp, or the client is still running the old config.
Check the URL ends in /mcp?key=YOUR_KEY, then restart the client properly — quit Claude Desktop rather than closing the window, and use Reload Window in Cursor. In claude.ai and ChatGPT the connector is off by default in each new chat: open the tools menu and switch Feasibly on.
The MCP endpoint could not resolve the key: it's been revoked, it's mistyped, a trailing space or line break came along with it, or the account was created seconds ago and the key hasn't finished syncing to the edge.
Re-copy the key from the keys page and check it's the full 44 characters. If you registered moments ago, simply loading the keys page re-syncs any key that didn't make it — open it once, then retry the connection.
No credential reached the endpoint. Often the header was sent as Bearer: or the key alone, without the Bearer prefix.
Send Authorization: Bearer YOUR_KEY, or fall back to ?key=YOUR_KEY in the query string. Both are accepted on REST. On the /mcp endpoint, only the query parameter is.
Tier gating, not a fault. Subdivision, overlay comparison and site comparison are Pro; PDF reports are Scale.
Use the free tools, or upgrade at app.feasibly.com.au/billing. The tier table above is the authoritative mapping.
The daily burst cap, which is a separate guard from your monthly allowance. Free 20, Starter 50, Pro 300, Scale 1,000 tool calls a day. It exists to bound abuse, not to ration normal work.
It resets at midnight UTC. Only actual tool calls count — connecting, listing tools and other protocol traffic are free, so a merely-connected client never burns the cap.
The monthly ledger — the entitlement you actually bought. It resets on your billing anniversary, not on the first of the month.
Wait for the reset, upgrade, or buy a top-up. Purchased credits never expire, and your monthly allowance is always spent first. Note that both counters are per account: issuing more keys does not multiply the quota.
A government layer didn't answer — an outage, a retired endpoint, a timeout. We refuse to render an unanswered query as clear land, so the response degrades loudly instead of quietly.
Read the data_gaps entries and treat those layers as unchecked, not as clear. Retry shortly; most outages are brief. Live per-state currency is published on the amendments page.
Queensland has no statewide zoning layer: each council publishes its own scheme, and we hold the South-East Queensland councils plus Toowoomba. Outside those, we don't have that council's scheme — a routine outcome, not an error.
There's no workaround, and we say so rather than guessing. This is deliberately distinct from “zone could not be determined for this parcel”, which means we do hold the scheme and the query missed — usually a road reserve or a cadastral disagreement about which lot you're on. See coverage.
The Northern Territory is not covered. It has no workable public spatial planning API, and we would rather return nothing than fabricate a zone.
None for now. The other seven states and territories are live.
Geocoding. An address string that resolves to a street centreline or a suburb rather than a parcel produces a screening of the land next door — and a clause-cited answer about the wrong site is worse than no answer.
Pass lat and lng instead of an address string when you have them; that removes the ambiguity entirely. Otherwise give the full street address with suburb and state. Watch for the response's own warning that it could not resolve to a specific street address.
Something we haven't documented, which we'd like to know about.
Email hello@feasibly.com.au with the address you tried and the exact error text. Replies inside 24 hours; setup problems go to the front of the queue.
Before you rely on it
Roughly 455 councils across seven states and territories answer, but they don't all answer with the same grade of data. Three tiers, and we don't collapse them — you'd find out anyway, and you'd find out at the worst moment.
Tier 1 — verified schedule
79 councils, 620+ council-specific zone schedules read by hand from the source planning scheme and human-verified, with daily amendment monitoring and the ResCode Clause 55 envelope. Every value is linked to its clause. This is the depth the rest of the country is being built up to.
Tier 2 — machine-extracted controls
On top of the state APIs, the detailed dwelling controls the LEP layer omits — setbacks, site coverage, landscaped area, private open space — are codified from council DCPs for 116 NSW councils and 8 SEQ schemes, and surfaced as dcp_controls. These are screening-grade, machine-extracted values, a subset independently verified. They are not the same tier as Victoria's verified schedules and are labelled accordingly in every response.
Tier 3 — state API
Zone and overlay data straight from the authoritative government spatial APIs — NSW Standard Instrument LEP, the SA Planning & Design Code, QLD council endpoints, WA SLIP, ACTmapi and theLIST. Authoritative for what it covers, without a manual per-council schedule interpretation layer behind it.
Read the confidence tag, not just the number. Every parameter carries its own confidence and source clause, and an empty overlay array means checked-and-clear — not unknown. Anything we could not check appears in data_gaps.
The accuracy guarantee covers the zone. If a lookup returns the wrong zone, that lookup is free and we credit ten more, and the claim becomes a permanent correction to the dataset. It is a guarantee about the zone specifically — not a warranty over every derived control, envelope figure or yield indicator. See the claims process and the methodology behind it.
All of it is screening and preliminary research. It is not planning, legal or architectural advice, and you should verify with the relevant council before making a decision.
Send us the address you tried and the error you got — setup problems are a bug on our side of the line, not a puzzle for you to solve.
If we get the zone wrong, that lookup is free and we credit ten more.