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/mcp

ChatGPT

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=550

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

ToolWhat it doesArguments
search_rentalsSearch ADU rentalscityzipmin_pricemax_pricebedrooms_minbathrooms_minavailable_byfurnishedpets_allowedpermit_verified_onlyinclude_leasedlimitcursor
get_rentalGet one ADU rentalid*
get_rent_estimateEstimate market rent for an ADUaddress*bedrooms*bathrooms*square_feet*property_type
get_adu_rulesGet ADU rules for a jurisdictionjurisdiction*question
estimate_permit_feesEstimate ADU permit feesjurisdiction*construction_type*square_footage*bedrooms*bathrooms*storiesfoundation_typeneeds_new_sewer_lateralparcel_in_hillsideneeds_fire_sprinklerneeds_new_water_serviceneeds_new_electric_panelplan_check_speed
resolve_parcelLook up a lotaddressapncounty
match_plans_to_lotMatch pre-approved plans to a lotaddressapncounty
search_plansSearch pre-approved ADU plansbedrooms_minmin_sqftmax_sqftmax_plan_pricepre_approved_inlimitcursor
search_servicesFind ADU service providerscategorycitylimitcursor
search_managersFind property managers for an ADUcitylimitcursor
ask_aduAsk A-du about ADUsquestion*jurisdiction
start_listingStart listing an ADU for rentaddresspricebedroomsbathroomssquare_feetproperty_typeavailable_fromnamedescription
request_tourwritesRequest a tourlisting_id*preferred_times*messageidempotency_key
send_inquirywritesSend an inquirylisting_id*message*idempotency_key
get_threadRead conversationsthread_idlimit
reply_to_threadwritesReply in a conversationthread_id*message*idempotency_key
subscribe_listing_alertwritesSubscribe to listing alertscitymin_pricemax_pricebedrooms_minbathrooms_minproperty_typefurnishedpets_allowedunsubscribe
draft_listingwritesDraft a rental listingaddress*price*namedescriptionbedroomsbathroomssquare_feetproperty_typeavailable_fromidempotency_key
start_applicationStart a rental applicationlisting_id
get_my_activityWhat I have going on with A-dunone
searchSearch A-duquery*
fetchFetch one A-du recordid*

* 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://llms The llms.txt index: what A-du is, every core page with a one-line summary, and the machine-readable feeds.
  • adu://llms-full The complete published text of the guides, rules pages, marketplace pages and pricing, in one document. Large.
  • adu://feed Every 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_rental Search permit-verified ADU rentals for a city and budget, present the best matches with links, and offer next steps.
  • can_i_build_an_adu Resolve the lot, fetch the jurisdiction rules, estimate permit fees, and match pre-approved plans, then summarize.
  • list_my_adu Explain 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-Client header naming your agent, or the clientInfo in 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.