OneHome is a CoreLogic product. Buyers reach it through a private magic-link URL their real-estate agent emailed ( https://portal.onehome.com/.../?token=...). It's an Angular SPA backed by a single GraphQL API at services.onehome.com/graphql.
This skill drives the onehome-mcp tools ( onehome_*) — all GraphQL-bound except for the local PITI / affordability calculators.
If the user asks generally about a property without naming OneHome, prefer one of the public-listing MCPs (zillow / redfin / homes / compass) first.
The MCP picks one at startup:
ONEHOME_TOKEN (env): raw bearer JWT.ONEHOME_MAGIC_LINK (env): full URL with ?token=. The token IS the bearer.portal.onehome.com tab.Run onehome_healthcheck first to confirm auth is wired up — it returns the mode, token expiry (when known), and a one-line hint.
onehome_get_groups → the curated buckets the agent shared with the buyer. Most tools take a group_id.onehome_search_properties { group_id, [saved_search_id] }. Pass a saved_search_id from onehome_get_saved_search to apply a saved filter; leave it off for the group default. onehome_get_saved_search_with_listings returns the saved search and its inflated listings in one call.onehome_get_property { group_id, listing_id } for the full record. The listing id is an OSK like EYxOzZSAbCdEf12345; you can pass a portal URL instead and the MCP will extract it.onehome_get_property to drive onehome_get_schools and onehome_get_walk_score.onehome_compare_properties { group_id, targets: [...] } — 2 to 8 listings, concurrent fetch, per-row error capture. Don't fan out manual get_property calls when comparing.onehome_graphql lets you send a raw document with variables when you need a field the structured tools don't expose. Common operation names: GetOneHomeUser, GetListings, GetPins, ListingById, MediaListingById, GetSavedSearches, ListingSuggestionsSearch. (LocalLogic schools / walk-score are REST endpoints, not GraphQL operations — use onehome_get_schools / onehome_get_walk_score instead.)onehome_search_suggestions { query } bypasses the group / saved-search structure. Use it when the user knows what they're looking for (MLS number, address, partial street name) but doesn't care which group it lives in.
onehome_calculate_mortgage and onehome_calculate_affordability are pure local math — no network, no token needed. Use them when the user asks "what would my payment be on this place" or "what can I afford"; identical math to the other realty MCPs.
group_id on listing detail / photos. Every listing surface is scoped to a group. If you have a listing id from onehome_search_suggestions, you still need a group id to inflate it. Pick the group most likely to contain it (usually the user's primary one).onehome_healthcheck shows seconds_until_expiry. Refresh the env var if it's close to zero.