Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for onehome-mcp

Pod holds 18 of 25 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to onehome-mcp.

Most discussed

bulk resolver should run the same fallback rungs as single-call (parity audit)

Round 3 feedback exposed that zillow_resolve_addresses was running only the direct-resolver rung while zillow_get_by_address had grown a 3-rung strategy (direct → suffix-expansion → search-fallback). Real example: 20 addresses → 0 resolved via bulk, 17 resolved when looped through the single call. Filed as chrischall/zillow-mcp#<TBD>.

This issue is the parity audit for onehome_resolve_addresses against onehome_get_by_address. Confirm or fix:

  1. Does the bulk resolver run exactly

Read the thread · 2026-05-28 · closed · 1 comment

Add bulk onehome_resolve_addresses(addresses[]) — companion to onehome_bulk_get

From the cross-MCP real-world report (item #4): every backfill workflow starts with "I have an address, give me an ID/URL," and resolving 60 addresses across two sessions took ~6 search calls + ~15 individual resolves + manual matching. A single batch call collapses this to one round trip.

Differentiation from existing onehome_bulk_get

This is distinct from the already-filed onehome_bulk_get (issue #19, PR #29):

  • onehome_bulk_get(listing_ids[]) — takes listing IDs, returns inf

Read the thread · 2026-05-27 · closed · 1 comment

P2: add portal_url_hyperlink (Google-Sheets formula) to every property record

Motivation

Today's session built 53 of these by string concat. Lift the URL-pattern knowledge server-side.

Schema

Add portal_url_hyperlink: string to every property record:

portal_url_hyperlink: '=HYPERLINK("https://portal.onehome.com/en-US/properties/<id>","OneHome")'

Mirrors the per-row url field but in Sheets-paste-ready form.

Acceptance

Pasting the value into a Google Sheet cell renders as a clickable "OneHome" link to the right listing.

Read the thread · 2026-05-27 · closed · 1 comment

P2: onehome_get_session_context should list ALL registered sessions + add active_session_id

Motivation

With multi-session support (#9) the diagnostic tool needs to show the full set, not just the active one.

Output

{
  active_session_id: "<id>",
  sessions: [
    { session_id, auth_mode, auth_ready, auth_expires_at, session_context },
    ...
  ]
}

When only one session is registered (today's behavior), the array has one entry and active_session_id points at it — backwards-compatible-shaped enough to keep the common path readable.

Acceptance

Multi-session test

Read the thread · 2026-05-27 · closed · 1 comment

P1: null out placeholder tax_annual: 1 and surface tax_is_estimated

Problem

Real session saw tax_annual: 1 on three Eagles Nest new-construction listings. Not a real tax bill — a not-yet-assessed placeholder. Caller treated $1 as a real number, which was wrong.

Fix

  • Null out tax_annual when its value is 1 (and probably 0).
  • Add tax_is_estimated: boolean — true when the upstream marks the value as a county estimate vs an actual bill (the data has a flag for this; check the raw payload).

Acceptance

  • Listing with raw tax_annual: 1 → ret

Read the thread · 2026-05-27 · closed · 1 comment

P1: compute days_on_market + price_drop_amount + price_drop_percent on every record

Motivation

Two derived fields every caller will want. Lift the math server-side.

Fields

  • days_on_market: number | null — from major_change.at when major_change.type === "NewListing"; else from a first-list timestamp if upstream provides one; else null.
  • price_drop_amount: number | nullprevious_list_price - list_price when both present.
  • price_drop_percent: number | null(previous_list_price - list_price) / previous_list_price * 100, rounded to 0.1.

Acceptance

Read the thread · 2026-05-27 · closed · 1 comment

Auto-review follow-ups for PR #104: refactor(skill): move root SKILL.md into skills/, point plugin.json at ./skills/

Tracking auto-review follow-ups for #104 (verdict: fail).

🔴 Important

  • Broken cross-skill documentation references in skills/onehome-fpx/references/graphql-operations.md — lines 6 and 32 contain ../SKILL.md that should be ../onehome/SKILL.md

When addressing the review on #104, resolve each item and add Closes #<this issue> to the PR once everything is genuinely fixed; deferred items stay open here. See the auto-review follow-up conventio

Read the thread · 2026-07-13 · closed · external user · 0 comments

P1: onehome_set_auth hangs ~4 min on a stale/invalid magic-link token instead of failing fast

Summary

Calling onehome_set_auth with a stale magic-link token hangs for the full MCP client timeout (~4 minutes) before erroring, instead of returning a fast "token expired/invalid" error.

Root cause

onehome_set_authOneHomeClient.setAuthFromInputDirectTransport.start()exchangeEmailToken() (src/auth.ts:231) does a bare fetch(CHECK_TOKEN_URL, ...) POST to /api/authentication/checkToken with no per-attempt deadline. When upstream wedges on a stale token (c

Read the thread · 2026-05-29 · closed · 0 comments

Most recent

P0: every listing fetch fails — UnparsedAddress removed from OneHome CustomProperty schema

Summary

Source is 100% broken. Every listing fetch fails upstream validation:

Validation error (FieldUndefined@[listingDetail/customProperty/UnparsedAddress]):
Field 'UnparsedAddress' in type 'CustomProperty' is undefined

OneHome (CoreLogic) dropped or renamed the UnparsedAddress field on the CustomProperty GraphQL type. Because the field is selected in our canonical customProperty { ... } selection set, the entire document is rejected at validation time — so it isn't j

Read the thread · 2026-05-29 · closed · 0 comments

set keepAliveIntervalMs: 25_000 in FetchproxyServer constructor (fetchproxy#71)

Parent issue

fetchproxy#71 — cohort follow-up to opt Pattern A MCPs into proactive keep-alive (0.9.0 wave).

The change

In src/transport-fetchproxy.ts (or equivalent), add keepAliveIntervalMs: 25_000 to the FetchproxyServer constructor options:

const transport = new FetchproxyServer({
  serverName: 'onehome-mcp',
  // ... existing options
  keepAliveIntervalMs: 25_000,  // Round-3 #67 — proactive SW resident-keeping
});
`

[Read the thread](https://github.com/chrischall/onehome-mcp/issues/48) · 2026-05-28 · closed · 0 comments

### add search-fallback rung to onehome_get_by_address (round-3 architectural gap)

## Architectural gap

Round-3 zillow corpus made the case: a real-world set of 20 mountain MLS addresses resolved 0/20 via zillow's direct-resolver rung but 17/20 via the price-band-bounded search-fallback rung. **The search-fallback rung was load-bearing**, not the price band per se.

`onehome_get_by_address` today runs **one rung**: a single `ListingSuggestionsSearch` GraphQL op against the magic-link-gated saved-search scope (`groupId`). When suggestions returns no row — the failure mode rura

[Read the thread](https://github.com/chrischall/onehome-mcp/issues/44) · 2026-05-28 · closed · 0 comments

### fetchproxy service-worker eviction handling (capture-mode auth)

From the cross-MCP real-world report (item #22): today's session blocked entirely on "extension icon needs to be clicked to wake service worker." The same `bridge_down` error class affects every fetchproxy-backed MCP in the fleet.

## Scope for onehome-mcp

This applies to onehome **only in `fetchproxy_capture` mode** — i.e., when `ONEHOME_TOKEN` / `ONEHOME_MAGIC_LINK` env vars aren't set and the server falls through to the browser-extension bridge for captured auth.

**The env_token and magic_l

[Read the thread](https://github.com/chrischall/onehome-mcp/issues/38) · 2026-05-27 · closed · 0 comments

### onehome_search_properties with group_id only silently returns 0 for consumer-share accounts

## Problem

`onehome_search_properties({ group_id })` without `saved_search_id` silently returns `{ count: 0, listings: [] }` for consumer-share accounts. The caller can't tell whether the group is genuinely empty or whether they hit the access-restricted path.

## Fix (two options)

**A. Auto-fall-back to the saved-search path** when the session context has a `savedSearchId` and the raw `listings(groupId, ...)` returns 0. Probably what the caller wanted.

**B. Surface a clear error** explaining

[Read the thread](https://github.com/chrischall/onehome-mcp/issues/27) · 2026-05-27 · closed · 0 comments

### Add regression test for capture_request_header capability declaration

## Status

Fix landed in main as PR #9 (`fix(transport): declare capture_request_header capability on bridge`). Verified at `src/transport-fetchproxy.ts:97`:

```ts
capabilities: ['capture_request_header'],

What's left

Add a regression test that exercises the fetchproxy bridge setup end-to-end:

  1. Construct a FetchproxyTransport and verify capabilities: ['capture_request_header'] is what gets handed to FetchproxyServer (spy on the constructor).
  2. Verify the runtime `onehome_set_

Read the thread · 2026-05-27 · closed · 0 comments

P2: surface address_alternates[] when upstream MLS data has them

Motivation

Today's session has an ongoing "109 vs 169 Overlook Point Ln" discrepancy between Compass and Canopy MLS. Better data plumbing might have flagged it sooner.

Fix

If the upstream MLS payload has alternate address strings (different MLS feeds, prior addresses, parcel variants), surface them as address_alternates: string[] on the formatted record. Omit the field when absent or empty.

Acceptance

A listing with two MLS address strings shows both in address_alternates (excl

Read the thread · 2026-05-27 · closed · 0 comments

P2: default include_listing_ids=true on onehome_get_saved_search

Motivation

The saved search is essentially useless without its listingIds — that's the whole point. The current default-off setting forces every caller to pass the flag or follow up with another call.

Change

Flip the default to true. Callers who explicitly don't want them pass false.

Behavior change — ship with the version bump for P0/P1.

Read the thread · 2026-05-27 · closed · 0 comments

P2: support multiple concurrent registered sessions in onehome_set_auth (route by MLS suffix)

Motivation

Today's session had three magic-link tokens (HCAOR + 2× CANOPY) and re-auth'd mid-batch to switch between them — fragile if a single bulk fetch needs to span MLSes.

Change

  • onehome_set_auth registers an ADDITIONAL session rather than replacing the active one. Returns a session_id.
  • Per-listing routing: extract the MLS suffix from listing_id (~CANOPY, ~HCAOR, etc.) and pick the right session automatically.
  • New onehome_set_active_session(session_id) lets the cal

Read the thread · 2026-05-27 · closed · 0 comments

P1: add onehome_get_saved_search_with_listings combo tool

Motivation

The magic-link → "show me my saved homes" flow ALWAYS goes:

  1. onehome_get_saved_search to get the saved search + listingIds
  2. onehome_search_properties(saved_search_id=...) to inflate the listings

Two round trips for one conceptual action.

Fix

Add onehome_get_saved_search_with_listings that combines both:

{
  saved_search: { id, name, ... },
  listings: [ { listing_id, ... }, ... ],
  count: N
}

Acceptance

New-session-from-magic-link flow drops from 2

Read the thread · 2026-05-27 · closed · 0 comments

The remaining reports are on the project's issue tracker.