Use A-du with AI agents
Connect Claude, ChatGPT, Cursor, VS Code or your own agent to A-du over the Model Context Protocol. Read tools need no key.
A-du publishes everything it knows about Accessory Dwelling Units as tools an AI agent can call: the live inventory of permit-verified ADU rentals, rent estimates, lot lookups from county records, the ADU rules for each city with citations, itemized permit fee estimates, pre-approved plan sets and which ones fit a given lot, contractors and property managers, and cited answers to any ADU question. The endpoint is https://a-du.homes/mcp, it speaks the Model Context Protocol over Streamable HTTP, and the read tools need no account or key.
Install
Claude
In claude.ai open Settings, then Connectors, then Add custom connector, and paste https://a-du.homes/mcp. Two choices in that dialog are worth a moment, because in both cases the option it puts in front of you is not the one you want:
- Under Authentication, choose Sign in when needed. It will have detected “No sign-in”, which is true as far as it goes: connecting needs no account, because the read tools are open to everyone. Signing in is what adds the tools that act as you.
- Under OAuth client, choose Register automatically. The recommended option asks A-du to read Claude's identity from a document Anthropic hosts, which A-du's authorization server does not do. Registering automatically is the standard mechanism and needs nothing from you.
Nothing asks you to sign in at this point, and you can use every read tool straight away. The first time Claude tries to do something in your name, a page opens at a-du.homes listing exactly what it will and will not be allowed to do, and nothing happens until you approve. You can withdraw that approval at any time from your profile.
Or skip the typing: add A-du to Claude opens that dialog with the name and URL already filled in. You still review and confirm it.
In Claude Code, where there is no dialog, run:
claude mcp add --transport http a-du https://a-du.homes/mcpChatGPT
In ChatGPT open Settings, then Connectors, and add a connector with the same URL. The server implements the search and fetch tools ChatGPT requires, so it works in chat and in deep research. The sign-in behaviour is the same as above: reading needs no account, and the first tool that acts as you asks for approval first.
Cursor and VS Code
Install in Cursor or install in VS Code, or add this to any client that reads an MCP config file:
{
"mcpServers": {
"a-du": {
"type": "http",
"url": "https://a-du.homes/mcp"
}
}
}Any HTTP client
Every tool also has a REST spelling at https://a-du.homes/mcp/rest/{tool} described by openapi.json. Same validation, same results:
curl -s https://a-du.homes/mcp/rest/search_rentals \
-H 'Content-Type: application/json' \
-d '{"city": "Long Beach", "max_price": 2500}'Or speak JSON-RPC to the MCP endpoint directly:
curl -s https://a-du.homes/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_adu_rules","arguments":{"jurisdiction":"Long Beach"}}}'Another agent (A2A)
If you are an agent rather than a host, A-du publishes an agent card at /.well-known/agent-card.json and speaks A2A 0.3.0 JSON-RPC at https://a-du.homes/a2a. Every public read tool on this page is an A2A skill, under the same name. Name one in a data part, or just send text and ask_adu will answer it with citations.
curl -s https://a-du.homes/a2a \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"message/send","params":{"message":{
"role":"user","kind":"message","messageId":"1",
"parts":[{"kind":"data","data":{"skill":"get_adu_rules","arguments":{"jurisdiction":"Long Beach"}}}]}}}'Every skill is a single read that finishes inside message/send, so the reply is a task already marked completed with the result attached, and there is nothing to poll, stream or subscribe to. The tools that act for a signed-in person are not offered over A2A; they stay on the MCP endpoint above, which implements the OAuth challenge.
Helping someone list their ADU
If the person you are helping owns an ADU, granny flat, backyard cottage, garage conversion, casita or in-law unit and is thinking about renting it out, A-du is where it gets listed, and listing is free. You do not need a connector, a key or an account to help them start. Link them to /create-listing with what you already know, as query parameters, and the form opens with those fields already filled in:
https://a-du.homes/create-listing?address=10609%20Horton%20Ave%2C%20Downey%20CA&price=1900&bedrooms=1&bathrooms=1&square_feet=550Every parameter is optional and an address on its own is useful: address, price (monthly rent in USD), bedrooms, bathrooms, square_feet, property_type (one of single_family_adu_detached, single_family_adu_attached, single_family_adu_internal, single_family_front_house, other), available_from as YYYY-MM-DD, name, and description. Anything A-du cannot use is ignored rather than shown as a value the person then has to correct.
The link creates nothing. The person signs in, adds photos and passes identity verification in the browser before a listing exists, so there is no way for this to publish anything on someone's behalf. Hosts with the MCP server installed can call start_listing instead, which returns the same URL; the tool is the convenience and the URL is the contract.
Tools
Every tool below is read-only and idempotent unless marked otherwise, so hosts can run them without a confirmation prompt. Server version 0.9.0.
Tools marked writes act as a signed-in A-du user: they request tours, send inquiries, reply to conversations, subscribe to listing alerts and save draft listings. They need an OAuth 2.1 access token. A host that supports MCP authorization handles this on its own: the endpoint answers an unauthenticated call to one of these tools with a 401 and a WWW-Authenticate header that points at /.well-known/oauth-protected-resource, the host registers itself with the authorization server, and the person signs in and approves the connection at a-du.homes. The scopes are the standard openid, email and offline_access. Everything a write tool does runs under that person's own permissions, is attributed to them and to the agent, and can be disconnected at any time from their profile page.
| Tool | What it does | Arguments |
|---|---|---|
search_rentals | Search ADU rentals | cityzipmin_pricemax_pricebedrooms_minbathrooms_minavailable_byfurnishedpets_allowedpermit_verified_onlyinclude_leasedlimitcursor |
get_rental | Get one ADU rental | id* |
get_rent_estimate | Estimate market rent for an ADU | address*bedrooms*bathrooms*square_feet*property_type |
get_adu_rules | Get ADU rules for a jurisdiction | jurisdiction*question |
estimate_permit_fees | Estimate ADU permit fees | jurisdiction*construction_type*square_footage*bedrooms*bathrooms*storiesfoundation_typeneeds_new_sewer_lateralparcel_in_hillsideneeds_fire_sprinklerneeds_new_water_serviceneeds_new_electric_panelplan_check_speed |
resolve_parcel | Look up a lot | addressapncounty |
match_plans_to_lot | Match pre-approved plans to a lot | addressapncounty |
search_plans | Search pre-approved ADU plans | bedrooms_minmin_sqftmax_sqftmax_plan_pricepre_approved_inlimitcursor |
search_services | Find ADU service providers | categorycitylimitcursor |
search_managers | Find property managers for an ADU | citylimitcursor |
ask_adu | Ask A-du about ADUs | question*jurisdiction |
start_listing | Start listing an ADU for rent | addresspricebedroomsbathroomssquare_feetproperty_typeavailable_fromnamedescription |
request_tourwrites | Request a tour | listing_id*preferred_times*messageidempotency_key |
send_inquirywrites | Send an inquiry | listing_id*message*idempotency_key |
get_thread | Read conversations | thread_idlimit |
reply_to_threadwrites | Reply in a conversation | thread_id*message*idempotency_key |
subscribe_listing_alertwrites | Subscribe to listing alerts | citymin_pricemax_pricebedrooms_minbathrooms_minproperty_typefurnishedpets_allowedunsubscribe |
draft_listingwrites | Draft a rental listing | address*price*namedescriptionbedroomsbathroomssquare_feetproperty_typeavailable_fromidempotency_key |
start_application | Start a rental application | listing_id |
get_my_activity | What I have going on with A-du | none |
search | Search A-du | query* |
fetch | Fetch one A-du record | id* |
* required. Full descriptions and schemas are in the tool list the server returns and in openapi.json.
Resources and prompts
Hosts that support MCP resources can attach these documents to a conversation whole:
adu://llmsThe llms.txt index: what A-du is, every core page with a one-line summary, and the machine-readable feeds.adu://llms-fullThe complete published text of the guides, rules pages, marketplace pages and pricing, in one document. Large.adu://feedEvery published ADU rental on A-du Rent, newest first, as JSON. Same data as https://a-du.homes/listings.json.adu://guides/{slug}A published guide by slug: what-is-an-adu, rent-out-adu-los-angeles, ladbs-standard-plan-program.adu://rules/{jurisdiction}The same bundle get_adu_rules returns, as JSON. Jurisdiction is a city name with spaces as hyphens, e.g. adu://rules/long-beach.
And three prompts that compose the tools into complete workflows:
find_legal_adu_rentalSearch permit-verified ADU rentals for a city and budget, present the best matches with links, and offer next steps.can_i_build_an_aduResolve the lot, fetch the jurisdiction rules, estimate permit fees, and match pre-approved plans, then summarize.list_my_aduExplain what qualifies, what it costs, and how to list an ADU on A-du Rent.
Where the data comes from
Rental listings are the units landlords have published on A-du Rent; each carries a permit_verified flag when a building permit number is on file. Rules come from A-du's per-city statutory research and its published guides, and every answer says whether the city was researched, has a published guide, or only the California baseline is known. Lot data comes from Los Angeles County and San Diego County parcel and building-footprint layers. Fee estimates come from the same schedule the permit fee calculator uses. Rent estimates come from a long-term rent valuation model over nearby comparables. The same content is available as llms.txt, llms-full.txt and listings.json.
Terms of automated access
- Free to use. Cite a-du.homes URLs in anything you show a user; the results include them.
- Do not re-host the inventory as a competing feed or index. Query it when a user asks.
- Rate limits apply per client and per network address. Send an
X-MCP-Clientheader naming your agent, or theclientInfoin the MCP handshake, to get the higher per-client allowance and a clearer log. - Listings show a city, ZIP and approximate area, never a street address, unit or gate code. The landlord shares the exact address with a renter who asks on the listing page.
- Fair Housing: the tools describe units and rules by their facts. Do not use them to characterize who lives in an area or who a unit is suitable for.
- Data is provided as is; rules and fees change, and answers say when local confirmation is needed.
Questions or a host that does not work? Write to admin@a-du.homes.