{
  "data": {
    "a": {
      "slug": "opencommerce",
      "name": "opencommerce",
      "vendor": "Agentcard",
      "vendorUrl": "https://opencommerce.sh",
      "kind": "sdk",
      "category": "shopping",
      "summary": "opencommerce is Agentcard's Commerce SDK, a TypeScript package that gives an agent one `buy` tool. Agentcard searches stores, builds the cart and places the order after the shopper approves payment with a card saved in Agentcard's Vault.",
      "url": "https://www.anchorterminal.com/tools/opencommerce",
      "markdownUrl": "https://www.anchorterminal.com/tools/opencommerce.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/opencommerce.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/opencommerce.json",
      "license": "Proprietary. `@agent-cards/commerce-sdk` and the `agent-cards` CLI ship a licence of Agentcard Corporation that allows running them only to use Agentcard's services and forbids copying, reverse engineering and benchmarking a competing product. The repository they name is private",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.agentcard.sh",
      "packages": [
        {
          "registry": "npm",
          "name": "@agent-cards/commerce-sdk"
        },
        {
          "registry": "npm",
          "name": "agent-cards"
        }
      ],
      "auth": "oauth",
      "authNotes": "Company client credentials. `AgentcardClient` exchanges a client ID and secret for a platform token that lasts one hour and renews it a minute before expiry. Sandbox and production use separate credentials on one host. A buy tool can instead carry one shopper's own Agentcard access token. Each shopper connects through a Vault link and approves payments with a passkey. The CLI README says sign-ups are by invitation (https://docs.agentcard.com/api-reference/commerce-sdk/agentcard-client.md, checked 2026-10-30).",
      "pricing": "usage",
      "pricingNotes": "Standard is 1 per cent of each completed order, charged to the integrating company from a prefunded balance or a saved card, with no API access. Enterprise adds API access at custom fees. Sandbox purchases are never billed (https://opencommerce.sh/#pricing, https://docs.agentcard.com/commerce-sdk/quickstart.md, checked 2026-10-30).",
      "priceSummary": "1% fee",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Commerce SDK docs, the package or the opencommerce.sh pricing. Purchases are paid with the shopper's card from Agentcard's Vault, and agentcard.com's FAQ answers Not yet on x402, AP2 and other agent payment protocols (https://agentcard.com/, checked 2026-10-30).",
        "endpoints": []
      },
      "toolCount": 1,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 2716,
        "pypiWeekly": null,
        "asOf": "2026-10-30"
      },
      "docsUrl": "https://docs.agentcard.com/commerce-sdk/quickstart",
      "llmsTxt": "https://opencommerce.sh/llms.txt",
      "capabilities": [
        "shopping.search",
        "shopping.orders",
        "shopping.prices",
        "commerce.cart",
        "commerce.checkout",
        "shopping.returns"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "sdk",
        "typescript",
        "oauth",
        "sandbox",
        "webhooks",
        "llms-txt",
        "approvals",
        "pre-1.0",
        "new",
        "cli"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62,
        "grade": "B",
        "agentReady": false,
        "rank": 528,
        "ranked": true,
        "rankOf": 1240,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 75,
          "payments": 40,
          "reliability": 43,
          "schema": 81,
          "security": 68,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-30"
        },
        "negative": 0,
        "verdict": "One strictly typed buy tool covers search, cart, checkout and order updates, and every payment not covered by an auto-approval rule waits for the shopper's passkey. The tool's description runs to about 14.5 KB, the purchase API under it is undocumented, the monitoring page reports test passes rather than uptime, and the CLI says sign-ups are by invitation.",
        "bestFor": "A company building a chat agent that buys for US shoppers at many online stores, restaurants and airlines through one tool, with payments approved by the shopper's passkey.",
        "strengths": [
          "The buy tool takes five required fields under a strict JSON Schema, and the shopper and delivery address are fixed when the tool is built",
          "Every payment not covered by an auto-approval rule waits for the shopper's passkey on an approval link that works for about 15 minutes",
          "`forModel` strips every link from an answer, and links reach the shopper through `sendLink` without passing through the model",
          "Errors carry stable codes with a documented next step, and a timeout comes with advice to read the conversation before resending",
          "The SDK has no dependencies, and 19 versions shipped between 16 and 30 October 2026",
          "A public monitoring page reports per-merchant test results, success rates, last run and first-response times"
        ],
        "weaknesses": [
          "The tool description is 57 rules and about 14,500 characters, read on every call",
          "The purchase endpoints the SDK calls are not in the API reference or the OpenAPI file, and API access is Enterprise only",
          "The monitoring history started on 23 October 2026, 52 of 84 merchants had no results, and it measures test passes rather than uptime",
          "The CLI README says sign-ups are by invitation, while the quickstart says `init` creates the account",
          "Neither Agentcard's terms nor the docs address stores whose terms bar automated buyers. The changelog records checkouts finished behind a bot wall",
          "TypeScript only, at 0.18.6, two weeks after its first release"
        ],
        "agentNotes": [
          "Call `buy` with the shopper's words in `ask`, and set `confirm` true only after the shopper says yes to the cart you showed",
          "After a `timeout`, `unreachable` or `invalid_answer` error, read the conversation before sending the turn again, since the order may have gone through",
          "Show the cart's `max_charge` beside its total, because the approval holds up to that amount",
          "Use sandbox credentials for tests. `init` writes production credentials by default, and they place real orders",
          "Check a store with `GET /buy/merchants` before sending a shopper there, and suggest another store when it is `held_back` or `supported` is false"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 75,
          "payments": 40,
          "reliability": 43,
          "schema": 81,
          "security": 68,
          "transparency": 42
        },
        "provenanceScore": 83,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-30",
            "maintenance": "2026-10-30",
            "payments": "2026-10-30",
            "reliability": "2026-10-30",
            "schema": "2026-10-30",
            "security": "2026-10-30",
            "transparency": "2026-10-30"
          },
          "last": "2026-10-30",
          "oldest": "2026-10-30",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @agent-cards/commerce-sdk",
        "http": "curl \"https://api.agentcard.sh/buy/merchants?kind=catalog\u0026q=target.com\" -H \"Authorization: Bearer $AGENTCARD_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/shopping.search",
        "tool": "https://letme.dev/opencommerce"
      },
      "sameCompany": [
        "agentcard"
      ],
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Completed order fee, Standard plan",
          "unit": "pct",
          "usd": 1,
          "note": "Charged to the integrating company per live purchase. Sandbox not billed. https://opencommerce.sh/#pricing"
        }
      ],
      "provenance": {
        "legalEntity": "Agentcard Corporation",
        "domain": "opencommerce.sh",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://agentcard.com/terms",
        "privacy": "https://agentcard.com/privacy",
        "statusPage": "https://monitoring.opencommerce.sh",
        "changelog": "https://agentcard.com/updates",
        "securityTxt": "valid",
        "checked": "2026-10-30",
        "notes": [
          "opencommerce.sh's footer reads © 2026 Agentcard, Inc. and links agentcard.com's terms and privacy policy. The terms of use (last updated 10 July 2026) and the npm packages' licence name Agentcard Corporation, a Delaware corporation (File No. 10619012).",
          "The terms of use cover the MCP server, CLI, dashboard and API and do not name the Commerce SDK, opencommerce or the 1 per cent fee. The privacy policy was last updated 21 October 2026.",
          "The SDK calls api.agentcard.sh, an Agentcard domain, not opencommerce.sh.",
          "The status page is the monitoring page the footer links as Status. It reports per-merchant test results, not the availability of Agentcard's API.",
          "opencommerce.sh/.well-known/security.txt returns 404. agentcard.com/.well-known/security.txt is valid, with security@agentcard.com and an expiry of 1 October 2027.",
          "rdap.org returned 404 for opencommerce.sh, so its registration date is unknown. The first package version, 0.0.0-stage, was published on 16 October 2026.",
          "The changelog at agentcard.com/updates covers all of Agentcard's products. Its newest entry on 30 October 2026 was dated 27 October."
        ],
        "score": 83
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/opencommerce.json",
      "live": {
        "slug": "opencommerce",
        "probe": {
          "target": "https://api.agentcard.sh",
          "method": "get",
          "lastAt": "2026-10-31T01:29:38.948787658Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 105,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 120,
          "p95ms24h": 269,
          "samples24h": 18,
          "samples30d": 18,
          "days": [
            {
              "date": "2026-10-30",
              "probes": 2,
              "ok": 2
            },
            {
              "date": "2026-10-31",
              "probes": 16,
              "ok": 16
            }
          ]
        },
        "vendorStatus": {
          "page": "https://monitoring.opencommerce.sh",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-31T00:10:14.604856983Z"
        },
        "updatedAt": "2026-10-31T01:29:38.948787658Z"
      }
    },
    "answer": "opencommerce scores 62 (B) on agent readiness against Zillow in Claude's 28.7 (F), and leads in 6 of 7 scored categories. Zillow in Claude leads on payments \u0026 pricing.",
    "b": {
      "slug": "zillow-claude",
      "name": "Zillow in Claude",
      "vendor": "Zillow Group",
      "vendorUrl": "https://www.zillow.com/",
      "kind": "mcp",
      "category": "shopping",
      "summary": "Zillow's own connector for Claude, a remote MCP server that searches US homes for sale and rent, returns property details, Zestimate home values and neighbourhood market data, and calculates affordability and mortgage payments. No Zillow account is needed.",
      "url": "https://www.anchorterminal.com/tools/zillow-claude",
      "markdownUrl": "https://www.anchorterminal.com/tools/zillow-claude.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zillow-claude.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zillow-claude.json",
      "license": "Proprietary hosted service. No source published",
      "transports": [],
      "remoteUrl": "https://mcp.zillow.com/api/v2",
      "packages": [],
      "auth": "none",
      "authNotes": "Anthropic's directory entry gives sign-in as not required and the description says no Zillow account is needed (https://claude.com/marketplace/connectors/zillow, read 21 October 2026). We opened no MCP session, so this wasn't seen in a response. A plain GET to mcp.zillow.com answers 400 with \"Http operation is not supported for gateway protocol type MCP\".",
      "pricing": "free",
      "pricingNotes": "No price is published on any page we could read. The directory entry and Zillow's release of 19 October 2026 name no charge, and no Zillow account is needed. Zillow earns from the tours, agent connections and loan officers the release says the connector leads to. Which Claude plans can add it was not read first-hand.",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in Anthropic's directory entry or Zillow's release (checked 2026-10-21). Nothing is sold through the tools that were listed.",
        "endpoints": []
      },
      "toolCount": 9,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-21"
      },
      "docsUrl": "https://www.zillow.com/connect-claude-to-zillow/",
      "capabilities": [
        "shopping.search",
        "shopping.prices"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "no-auth",
        "free",
        "closed-source",
        "new"
      ],
      "lastRelease": "2026-10-19",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 28.7,
        "grade": "F",
        "agentReady": false,
        "rank": 1169,
        "ranked": true,
        "rankOf": 1240,
        "categoryRank": 8,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 33,
          "maintenance": 35,
          "payments": 50,
          "reliability": 15,
          "schema": 9,
          "security": 32,
          "transparency": 45
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-10-21"
        },
        "negative": 0,
        "verdict": "Zillow's own keyless MCP connector for Claude, with nine tools for US home search, Zestimates, neighbourhood data and affordability. None of its tools writes anything. Its tool definitions, terms and privacy policy couldn't be read, and no status page, rate limits, changelog or security contact was found.",
        "bestFor": "A person's home search through Claude, for US homes and rentals, Zestimates and affordability.",
        "strengths": [
          "Published by Zillow itself, with a release of 19 October 2026 and an Anthropic directory entry naming Zillow Inc. as maker",
          "No sign-in or Zillow account needed, per the directory entry",
          "Nine tools, every one named for search, lookup or calculation, with no write action listed",
          "Search filters named in the directory include price, home type, commute time, schools, pets and amenities",
          "Zillow says it sends no data to Anthropic and shows listings with their broker and MLS attribution"
        ],
        "weaknesses": [
          "No public tool reference. The tool definitions weren't read, and Zillow's own connector page answered with a bot check",
          "No status page, rate limits, SLA or changelog found",
          "Zillow's terms of use are disallowed by robots.txt and its privacy notice answered with a bot check, so what they allow an agent to do is unread",
          "No security.txt on zillow.com or zillowgroup.com, and no public bug bounty found",
          "Not in the official MCP registry. Third-party Zillow servers hold the zillow names there"
        ],
        "agentNotes": [
          "Use the server at https://mcp.zillow.com/api/v2 from Anthropic's directory, not the third-party Zillow servers in the MCP registry",
          "Search on objective criteria (location, price, size, amenities, schools, commute), since the release says the connector won't search on protected characteristics",
          "Treat Zestimates and affordability results as estimates, and hand tours, agent contact and financing to the person through Zillow's links",
          "Read tools/list before planning, because no tool reference is published and the input fields aren't documented anywhere we could read"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 28.7
          }
        ],
        "editorialScores": {
          "ergonomics": 33,
          "maintenance": 35,
          "payments": 50,
          "reliability": 15,
          "schema": 9,
          "security": 32,
          "transparency": 18
        },
        "provenanceScore": 71,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-21",
            "maintenance": "2026-10-21",
            "payments": "2026-10-21",
            "reliability": "2026-10-21",
            "schema": "2026-10-21",
            "security": "2026-10-21",
            "transparency": "2026-10-21"
          },
          "last": "2026-10-21",
          "lastMoved": "2026-10-30",
          "oldest": "2026-10-21",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http zillow https://mcp.zillow.com/api/v2",
        "config": {
          "mcpServers": {
            "zillow": {
              "type": "http",
              "url": "https://mcp.zillow.com/api/v2"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/shopping.search",
        "tool": "https://letme.dev/zillow-claude"
      },
      "area": "everyday",
      "provenance": {
        "legalEntity": "Zillow Group, Inc.",
        "domain": "zillow.com",
        "domainRegistered": "2004-09-16",
        "endpointOnVendorDomain": true,
        "terms": "https://www.zillow.com/corp/Terms.htm",
        "privacy": "https://www.zillowgroup.com/zg-privacy-policy/",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-21",
        "notes": [
          "The release names Zillow Group, Inc. (Nasdaq Z and ZG) and says the Zillow marks are owned by MFTB Holdco, Inc., a Zillow affiliate. The directory names the maker as Zillow Inc.",
          "The terms URL is the one www.zillow.com's robots.txt points to in its header, and robots.txt disallows it for all crawlers, so it was not fetched. The privacy URL is the one Anthropic's directory links. It redirects to https://www.zillow.com/corporate/zg-privacy-notice/, which answered with a PerimeterX bot check.",
          "www.zillow.com/.well-known/security.txt and www.zillowgroup.com/.well-known/security.txt return 404. mcp.zillow.com answers every plain GET, including robots.txt and security.txt, with a 400 from its MCP gateway.",
          "status.zillow.com gave no answer to our request, and no status page was found.",
          "RDAP for zillow.com gives a registration date of 2004-09-16, registrar GoDaddy Corporate Domains."
        ],
        "score": 71
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zillow-claude.json",
      "live": {
        "slug": "zillow-claude",
        "probe": {
          "target": "https://mcp.zillow.com/api/v2",
          "method": "get",
          "lastAt": "2026-10-31T01:29:52.564564567Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 456,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 437,
          "p95ms24h": 490,
          "samples24h": 249,
          "samples30d": 2292,
          "days": [
            {
              "date": "2026-10-21",
              "probes": 25,
              "ok": 25
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 16,
              "ok": 16
            }
          ]
        },
        "securityTxt": {
          "url": "https://zillow.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-30T15:39:35.535398999Z"
        },
        "domain": {
          "domain": "zillow.com",
          "registered": "2004-09-16",
          "source": "https://rdap.verisign.com/com/v1/domain/zillow.com",
          "checkedAt": "2026-10-25T13:57:28.255497771Z"
        },
        "pages": [
          {
            "url": "https://www.zillowgroup.com/zg-privacy-policy/",
            "kind": "privacy",
            "status": 403,
            "checkedAt": "2026-10-30T06:02:59.333109133Z",
            "changedAt": "0001-01-01T00:00:00Z"
          },
          {
            "url": "https://www.zillow.com/corp/Terms.htm",
            "kind": "terms",
            "status": 0,
            "checkedAt": "2026-10-30T06:02:59.27007402Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "blockedByRobots": true
          }
        ],
        "mcpTools": {
          "url": "https://mcp.zillow.com/api/v2",
          "checkedAt": "2026-10-31T00:55:53.618130162Z",
          "status": "ok",
          "protocol": "2025-11-25",
          "tools": [
            {
              "name": "zillow_city_neighborhood_real_estate_information",
              "title": "Zillow City \u0026 Neighborhood Search",
              "description": "\u003ctool_purpose\u003e\nReturns U.S. regions, areas, neighborhoods, or cities with for-sale and/or for-rent property counts\nfor each area. Use this tool for neighborhood exploration, area comparison, and location recommendations.\n\u003c/tool_purpose\u003e\n\n\u003cwhen_to_use\u003e\nUse this tool whenever a user asks about the best places to live, buy, or rent homes in U.S. cities\nor neighborhoods -- including lifestyle-driven queries (parks, hiking, nightlife, schools, walkability, etc.).\nThis applies even if the user doesn't mention home prices, filters, or housing status.\n\nExamples:\n- \"Best neighborhoods in Seattle for families\"\n- \"Where should I live near downtown Austin?\"\n- \"Compare Ballard vs Fremont vs Capitol Hill\"\n- \"Neighborhoods with good schools in Denver\"\n- \"Walkable areas near parks in Portland\"\n- MULTI-TURN: If the user modifies any criteria after the first call, you MUST call this tool again.\n\u003c/when_to_use\u003e\n\n\u003cwhen_not_to_use\u003e\n- User wants to search for specific property listings -\u003e use zillow_property_search\n- User asks about ONE specific property by address -\u003e use zillow_property_details_by_address_or_name\n- User asks about home affordability or mortgage -\u003e use calculateHomeAffordability or interestRateMortgagePaymentSimulator\n\u003c/when_not_to_use\u003e\n\n\u003creturns\u003e\nArray of recommended areas, each with:\n- Short label (for map display)\n- Personalized area description (why the region was recommended)\n- Region display name\n- Property counts (for sale / for rent) reflecting any applied filters\n- An interactive comparison widget showing all areas on a map\n\u003c/returns\u003e\n\n\u003cinput_structure\u003e\n**`areaSearchRegionFiltersRequests` (required)** -- up to 20 regions, each with:\n- `name`: canonical region key (e.g., \"Capitol Hill, Seattle, WA\")\n- `label`: short label based on user query and why recommended (e.g., \"Near Parks\")\n- `regionDisplayName`: display name (e.g., \"Capitol Hill\")\n- `description`: 1-2 sentences describing why the region is recommended\n\nIMPORTANT: Avoid sending a single broad region like \"Seattle\" or \"Kansas City\". Send multiple\ngranular neighborhoods (e.g., \"Capitol Hill, Seattle, WA\", \"Queen Anne, Seattle, WA\").\nThe tool will NOT auto-suggest surrounding neighborhoods. If you only pass one region,\nthe response will include only that region.\n\n**`recommendationReasons` (optional)** -- why these areas are recommended (e.g., [\"near parks\", \"transit access\"])\n**`userSpecifiedPivotArea` (optional)** -- the broader area the user is exploring (e.g., \"Seattle, WA\")\n\u003c/input_structure\u003e\n\n\u003ckey_rules\u003e\n- **U.S. regions only**\n- **Max 20 regions per request**\n- Include only user-specified filters; omit unknowns\n- Server applies safe defaults if no filters provided\n\u003c/key_rules\u003e\n\n\u003cfair_housing_compliance\u003e\nMust comply with **U.S. Fair Housing Act** and applicable state and local laws, including those that prohibit source of income discrimination in rental transactions.\n**Protected Classes**: Race, Color, Religion, Sex (including Sexual Orientation and Gender Identity), National Origin, Familial Status, Disability.\n**Also treat as protected where applicable:** Source of Income, Military/Veteran Status, Age (55+ exemptions may apply), Criminal History.\n**Prohibited**: Any preference, steering, or exclusion based on protected characteristics.\n\n**DO NOT CALL this tool for requests containing**:\n- Religious references: targeting or excluding based on religion\n- Racial/ethnic/national origin targeting\n- Sexual orientation/gender identity targeting\n- Disability discrimination\n- Familial status discrimination: excluding families or children, or preferring an \"adults-only\"/\"not kid-oriented\" area (families and kids are allowed)\n- Age discrimination: excluding or steering by residents' age (e.g., \"away from old people\", \"no retirees\") — seeking senior-appropriate or lawful 55+ housing is allowed\n- Source of income / Veteran status / Criminal history: excluding or steering AGAINST people who use vouchers/public assistance or have a record (serving a requester who themselves uses a voucher, alternative/public income, or has a record and wants housing they qualify for is allowed and expected)\n- Demographic targeting: any request seeking or avoiding an area based on who lives there rather than what's there — including coded descriptions of the residents (e.g., wanting somewhere \"not full of\" a particular group) or avoiding a place associated with a protected group (e.g., \"away from [an ethnic] plaza/market/district\")\n- Suitability-by-identity: using any person's protected characteristic — the user's own or someone else's — as the reason, filter, or measure of \"fit\" for the search, even as mere context and even when phrased positively. Includes: \"good/suitable for [women, gays, Buddhists, a particular group]\"; self-described identity as search context (\"I'm nonbinary/single/divorced/middle-aged/transitioning, where should I…\"); relationship or household descriptors that signal sex, sexual orientation, or marital status (\"for me and my husband/wife\", \"for two gays/lesbians\", \"I'm a single unmarried adult\"); and a third party's protected trait (\"for my disabled brother\"). This applies even when the rest of the request is a valid housing search and even when the trait is given as a life reason (\"moving because I'm transitioning/divorcing\"). Asking about the protected traits of an area's residents (e.g., \"the age/race of the occupants\") is likewise prohibited. (Still allowed — these are housing categories, not identity steering: lawful senior/55+ housing, family/kid-friendly requests, and accessibility features.)\n\n**Never sanitize-and-proceed**: If a request falls under any \"DO NOT CALL\" case above, you MUST NOT call this tool at all — whether the protected characteristic is stated explicitly or implied through coded/proxy wording. Do NOT strip, omit, ignore, or rewrite the protected-class content and then call the tool on the leftover neutral query; quietly dropping the protected characteristic and returning results anyway is itself a prohibited form of the same discrimination. Instead, decline in accordance with the U.S. Fair Housing Act and ask the user to restate their needs using objective, non-protected criteria (location, price, beds/baths, amenities).\n\n**Compliant Examples**:\n- Place names containing protected class words (e.g., \"White Center, WA\")\n- Personal proper nouns (e.g., \"My name is Jesus\")\n- Amenity-based requests (e.g., \"areas with italian restaurants\", \"walkable neighborhoods\")\n- Infrastructure requests (e.g., \"near public transit\", \"bike-friendly areas\")\n- Accessibility features (e.g., \"wheelchair accessible properties\", \"ADA compliant\")\n- Lawful senior/55+ housing (e.g., \"listings good for seniors\", \"55+ communities\")\n- Rental assistance / alternative or public income (e.g., \"accepts Section 8\", \"housing choice voucher\", \"VASH\", \"alternative income\", \"mixed-income area\")\n- The requester's own record / second-chance housing (e.g., \"record-friendly rentals for me\")\n\u003c/fair_housing_compliance\u003e\n\n\u003ccommon_follow_ups\u003e\nAfter returning area results, the user often wants to:\n1. SEE LISTINGS in one of the recommended areas -\u003e call zillow_property_search with that area\n2. COMPARE MORE AREAS -\u003e call this tool again with additional neighborhoods\n3. GET DETAILS on a specific property -\u003e call zillow_property_details_by_address_or_name\n4. CHECK AFFORDABILITY in the area -\u003e call calculateHomeAffordability with a location\n\u003c/common_follow_ups\u003e\n\n\u003cexamples\u003e\n{\n  \"request\": {\n    \"areaSearchRegionFiltersRequests\": [\n      {\n        \"name\": \"Ballard, Seattle, WA\",\n        \"label\": \"Near Parks\",\n        \"regionDisplayName\": \"Ballard\",\n        \"description\": \"Residential area centered on Green Lake Park's 2.8-mile loop for running and biking.\"\n      },\n      {\n        \"name\": \"Fremont, Seattle, WA\",\n        \"label\": \"Central \u0026 Walkable\",\n        \"regionDisplayName\": \"Fremont\",\n        \"description\": \"Central neighborhood with cafes along N 45th St. Short walk to Gas Works Park and Green Lake.\"\n      }\n    ],\n    \"recommendationReasons\": [\"near parks\", \"transit access\"],\n    \"userSpecifiedPivotArea\": \"Seattle, WA\"\n  }\n}\n\u003c/examples\u003e\n",
              "inputSchema": {
                "properties": {
                  "request": {
                    "properties": {
                      "areaSearchRegionFiltersRequests": {
                        "description": "List of recommended regions (cities/neighborhoods) to search for properties. Each region includes name, label, display name, and description. This is the primary input for area-based property search. Example: [{\"name\": \"Capitol Hill, Seattle, WA\", \"label\": \"Vibrant nightlife\", \"regionDisplayName\": \"Capitol Hill\", \"description\": \"Trendy neighborhood with bars and restaurants\"}]",
                        "items": {
                          "properties": {
                            "description": {
                              "description": "A personalized description of the recommended region (2-3 sentences). This should highlight features relevant to the user's search criteria such as amenities, lifestyle, or location benefits. Focus on objective, factual information about the area. CRITICAL: Do not include any demographic data, school ratings, crime statistics, or other information that would violate fair housing laws. Keep descriptions neutral and inclusive.",
                              "type": "string"
                            },
                            "label": {
                              "description": "A contextual label that describes the region's relationship to the user's search criteria. This helps users understand why this region was recommended and will be displayed in the UI so keep it short and concise. (max 30 characters) Examples: \"1 hour from Seattle Downtown\", \"Near tech companies\", \"Vibrant nightlife\"",
                              "type": "string"
                            },
                            "name": {
                              "description": "The canonical name of the recommended region in hierarchical format: neighborhoodName, cityName, stateName. This is used for internal identification and must follow the exact format. Examples: \"Seattle, WA\", \"Capitol Hill, Seattle, WA\", \"Downtown, Austin, TX\"",
                              "type": "string"
                            },
                            "regionDisplayName": {
                              "description": "The user-facing display name for the region that will be shown in the UI. This should be a clean, readable name in the format city, state or neighborhood, state. Examples: \"Capitol Hill, WA\", \"Issaquah, WA\", \"Downtown Austin, TX\"",
                              "type": "string"
                            }
                          },
                          "required": [
                            "description",
                            "label",
                            "name",
                            "regionDisplayName"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "recommendationReasons": {
                        "description": "List of reasons explaining why the recommended regions were selected based on user criteria. These reasons help users understand the recommendation logic and are displayed as UI tags. Examples: [\"good nightlife\", \"access to transit\", \"near tech companies\"]. IMPORTANT: These are display tags only and do not filter results. Always include reasons when user specifies criteria. Keep reasons short (30 characters max each) and focus on key selling points of the areas.Do not include property filters in the reasons such as beds, baths, etc.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "userSpecifiedPivotArea": {
                        "description": "The geographic area or city that serves as the search center/pivot point. This is typically the main location mentioned in the user's query. Examples: \"Seattle\" for 'neighborhoods in Seattle', \"Austin\" for 'areas near Austin', \"San Francisco Bay Area\" for 'Bay Area neighborhoods'. This helps the system understand the geographic scope and context for the area search.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "areaSearchRegionFiltersRequests",
                      "recommendationReasons",
                      "userSpecifiedPivotArea"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "request"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": ""
              }
            },
            {
              "name": "zillow_property_details_by_address_or_name",
              "title": "Zillow Property Details",
              "description": "## Zillow Property Details by Query\n\nRetrieves detailed information about a specific property by address, building name or community name.\n\n---\n\n### What it returns\n- Comprehensive property details including address, price, features, photos, and more.\n- Returns structured JSON data for off-market properties from Zillow's property database.\n- For off market homes, JSON data will be returned but no widget will be returned.\n\n---\n\n### Inputs\n- **`query` (required)**\n   Property address or name (e.g., \"123 Main St, Seattle, WA 98101\")\n\n---\n\n### Key Rules \u0026 Constraints\n- **CURRENTLY SUPPORTS OFF-MARKET PROPERTIES ONLY** - Properties that are not actively listed for sale or rent\n- **NOT FOR ZESTIMATE EVALUATION OR ANALYSIS** - This tool returns property details; use the separate Zestimate tool for valuation analysis\n- Query must be a valid address\n- Returns error if property not found or is not an off-market property\n",
              "inputSchema": {
                "properties": {
                  "query": {
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": ""
              }
            },
            {
              "name": "zillow_property_search",
              "title": "Zillow Property Search",
              "description": "\u003ctool_purpose\u003e\nPrimary property search tool for U.S. real estate. Searches for properties for sale or for rent.\nSupports filters for location, price, property type, size, amenities, commute time, schools, and more.\nReturns matching property listings with an interactive map widget.\n\u003c/tool_purpose\u003e\n\n\u003cwhen_to_use\u003e\n- User wants to search for properties (DEFAULT choice for property search)\n- \"show me homes in...\", \"find properties...\", \"search for...\"\n- Rental searches: \"rentals in...\", \"apartments for rent\", \"pet-friendly rentals\"\n- Special housing: \"student housing\", \"senior apartments\", \"affordable housing\"\n- Specific filters: \"homes with pool\", \"garage required\", \"waterfront properties\"\n- For sale: \"homes for sale in...\", \"condos under 500k\", \"pending homes\"\n- Sold: \"recently sold\", \"what sold recently\", \"recent sales\"\n- Price/bedroom: \"studio apartments\", \"3 bed 2 bath\", \"under 400k\"\n- MULTI-TURN: If the user modifies any search criteria after the first call, you MUST call this tool again with updated parameters.\n\u003c/when_to_use\u003e\n\n\u003cwhen_not_to_use\u003e\n- User asks about ONE specific property by address -\u003e use zillow_property_details_by_address_or_name\n- User asks about neighborhoods or best places to live -\u003e use zillow_city_neighborhood_real_estate_information\n- User asks about home affordability or mortgage rates -\u003e use calculateHomeAffordability or interestRateMortgagePaymentSimulator\n\u003c/when_not_to_use\u003e\n\n\u003creturns\u003e\n- A set of matching property listings with:\n  - Address, price, beds/baths, square footage, lot size, property type\n  - Listing status, days on Zillow, monthly cost\n  - Photos, agent/brokerage info\n  - Geo coordinates for map display\n  - Home details page URL for each property\n- Result counts (total matching, displayed)\n- An interactive map widget showing property locations\n\u003c/returns\u003e\n\n\u003cinput_structure\u003e\n- **`propertySearchRegionFiltersRequest` (optional)** - Geographic search area(s) and context\n- **`propertyFiltersRequest` (optional)** - Only include filters the user specifies (omit others; do not send placeholder `unknown`)\n- **`displayLimit` (optional)** - Do NOT set unless the user explicitly says \"limit results\" or gives a number. Server handles defaults.\n\u003c/input_structure\u003e\n\n\u003ckey_rules\u003e\n- **U.S. properties only**\n- **Max 20 regions per request**\n- Only set filters explicitly provided by the user\n- Do not default any enums to `unknown`\n- Use structured filters, not free text\n- Do not set sortSelection unless user explicitly requests a sort order\n- Do not set displayLimit unless user explicitly says \"limit results\" or gives a number\n- Send only one of: school, schoolDistrict, propertySearchRegions, or customPolygonWkt\n- When using nearby sort, locationForNearbySort is ALWAYS REQUIRED\n- Requests must adhere to the input schema\n- Safe defaults are applied if no filters are provided\n- IMPORTANT: \"coming soon\", \"pre-market\", \"about to list\", \"not yet listed\", \"preview\", \"zillow preview\" → use forSaleListingStatuses (NOT homeStatuses)\n- forSaleListingStatuses values: active, comingSoon, zillowPreview — only for for-sale searches\n- \"coming soon\" / \"pre-market\" / \"about to list\" → forSaleListingStatuses:[\"comingSoon\"]\n- \"preview\" / \"zillow preview\" / \"pre-listing\" → forSaleListingStatuses:[\"zillowPreview\"]\n- \"active only\" / \"on market now\" → forSaleListingStatuses:[\"active\"]\n- To exclude a status, list the ones the user DOES want (e.g., exclude coming soon → [\"active\", \"zillowPreview\"])\n- These can combine with other filters: \"preview condos under 500k\" → forSaleListingStatuses:[\"zillowPreview\"] + homeTypes + salePrice\n- Do NOT set homeStatuses for coming soon/preview concepts — those are NOT homeStatus values\n\u003c/key_rules\u003e\n\n\u003cfair_housing_compliance\u003e\nMust comply with **U.S. Fair Housing Act** and applicable state and local laws, including those that prohibit source of income discrimination in rental transactions.\n**Protected Classes**: Race, Color, Religion, Sex (including Sexual Orientation and Gender Identity), National Origin, Familial Status, Disability.\n**Also treat as protected where applicable:** Source of Income, Military/Veteran Status, Age (55+ exemptions may apply), Criminal History.\n**Prohibited**: Any preference, steering, or exclusion based on protected characteristics.\n\n**DO NOT CALL this tool for requests containing**:\n- Religious references: targeting or excluding based on religion\n- Racial/ethnic/national origin targeting\n- Sexual orientation/gender identity targeting\n- Disability discrimination\n- Familial status discrimination: excluding families or children, or preferring an \"adults-only\"/\"not kid-oriented\" area (families and kids are allowed)\n- Age discrimination: excluding or steering by residents' age (e.g., \"away from old people\", \"no retirees\") — seeking senior-appropriate or lawful 55+ housing is allowed\n- Source of income / Veteran status / Criminal history: excluding or steering AGAINST people who use vouchers/public assistance or have a record (serving a requester who themselves uses a voucher, alternative/public income, or has a record and wants housing they qualify for is allowed and expected)\n- Demographic targeting: any request seeking or avoiding an area based on who lives there rather than what's there — including coded descriptions of the residents (e.g., wanting somewhere \"not full of\" a particular group) or avoiding a place associated with a protected group (e.g., \"away from [an ethnic] plaza/market/district\")\n- Suitability-by-identity: using any person's protected characteristic — the user's own or someone else's — as the reason, filter, or measure of \"fit\" for the search, even as mere context and even when phrased positively. Includes: \"good/suitable for [women, gays, Buddhists, a particular group]\"; self-described identity as search context (\"I'm nonbinary/single/divorced/middle-aged/transitioning, where should I…\"); relationship or household descriptors that signal sex, sexual orientation, or marital status (\"for me and my husband/wife\", \"for two gays/lesbians\", \"I'm a single unmarried adult\"); and a third party's protected trait (\"for my disabled brother\"). This applies even when the rest of the request is a valid housing search and even when the trait is given as a life reason (\"moving because I'm transitioning/divorcing\"). Asking about the protected traits of an area's residents (e.g., \"the age/race of the occupants\") is likewise prohibited. (Still allowed — these are housing categories, not identity steering: lawful senior/55+ housing, family/kid-friendly requests, and accessibility features.)\n\n**Never sanitize-and-proceed**: If a request falls under any \"DO NOT CALL\" case above, you MUST NOT call this tool at all — whether the protected characteristic is stated explicitly or implied through coded/proxy wording. Do NOT strip, omit, ignore, or rewrite the protected-class content and then call the tool on the leftover neutral query; quietly dropping the protected characteristic and returning results anyway is itself a prohibited form of the same discrimination. Instead, decline in accordance with the U.S. Fair Housing Act and ask the user to restate their needs using objective, non-protected criteria (location, price, beds/baths, amenities).\n\n**Compliant Examples**:\n- Place names containing protected class words (e.g., \"White Center, WA\")\n- Personal proper nouns (e.g., \"My name is Jesus\")\n- Amenity-based requests (e.g., \"areas with italian restaurants\", \"walkable neighborhoods\")\n- Infrastructure requests (e.g., \"near public transit\", \"bike-friendly areas\")\n- Accessibility features (e.g., \"wheelchair accessible properties\", \"ADA compliant\")\n- Lawful senior/55+ housing (e.g., \"listings good for seniors\", \"55+ communities\")\n- Rental assistance / alternative or public income (e.g., \"accepts Section 8\", \"housing choice voucher\", \"VASH\", \"alternative income\", \"mixed-income area\")\n- The requester's own record / second-chance housing (e.g., \"record-friendly rentals for me\")\n\u003c/fair_housing_compliance\u003e\n\n\u003cspecial_features\u003e\n**Nearby Searches**: Use sortSelection \"nearby\" with locationForNearbySort (ALWAYS REQUIRED lat/long anchor).\nExample:\n\"propertyFiltersRequest\": {\n  \"sortSelection\": \"nearby\",\n  \"locationForNearbySort\": { \"lat\": 37.8024, \"lng\": -122.4058 }\n}\n\n**Commute Filtering**: Use commuteTimeFilter with destinationLatLong, maxCommuteTimeInMinutes, mode, and timeOfDay.\nExample:\n\"propertyFiltersRequest\": {\n  \"commuteTimeFilter\": {\n    \"destinationLatLong\": { \"lat\": 39.0997, \"lng\": -94.5786 },\n    \"maxCommuteTimeInMinutes\": 15,\n    \"mode\": \"driving\",\n    \"timeOfDay\": \"rushHour\"\n  }\n}\n\n**Monthly Cost Filtering**: Use monthlyCostFilter. monthlyCost is REQUIRED; defaults applied for other fields.\nExample:\n\"propertyFiltersRequest\": {\n  \"monthlyCostFilter\": {\n    \"monthlyCost\": { \"min\": 1000, \"max\": 4000 }\n  }\n}\n\n**School Search**: Use schoolName with city and state (e.g., \"Comstock Elementary School, McKinney, TX\").\n\u003c/special_features\u003e\n\n\u003ccommon_follow_ups\u003e\nAfter returning search results, the user often wants to:\n1. REFINE SEARCH - modify filters (price, beds, location) -\u003e call this tool again with updated params\n2. GET DETAILS on a specific property -\u003e call zillow_property_details_by_address_or_name with the address\n3. EXPLORE NEIGHBORHOODS -\u003e call zillow_city_neighborhood_real_estate_information\n4. CHECK AFFORDABILITY -\u003e call calculateHomeAffordability with their financial info\n\u003c/common_follow_ups\u003e\n\n\u003cexamples\u003e\nMinimal request:\n{\n  \"request\": {\n    \"propertyFiltersRequest\": {\n      \"bedrooms\": { \"min\": 2 }\n    },\n    \"propertySearchRegionFiltersRequest\": {\n      \"propertySearchRegions\": [\n        {\n          \"description\": \"Seattle, WA is a major Pacific Northwest city\",\n          \"label\": \"Vibrant Tech Hub\",\n          \"name\": \"Seattle, WA\",\n          \"regionDisplayName\": \"Seattle\"\n        }\n      ],\n      \"userSpecifiedPivotArea\": \"Seattle, WA\"\n    }\n  }\n}\n\u003c/examples\u003e\n",
              "inputSchema": {
                "properties": {
                  "request": {
                    "$defs": {
                      "LatLong": {
                        "properties": {
                          "latitude": {
                            "description": "Latitude",
                            "format": "double",
                            "type": "number"
                          },
                          "longitude": {
                            "description": "Longitude",
                            "format": "double",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "MinMaxInt": {
                        "properties": {
                          "max": {
                            "description": "Maximum value",
                            "format": "int32",
                            "type": "integer"
                          },
                          "min": {
                            "description": "Minimum value",
                            "format": "int32",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "properties": {
                      "displayLimit": {
                        "description": "Display limit to control number of property cards in widget. Only set this if the user has specified the number of properties they want to see, otherwise the server will provide a default value.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "propertyFiltersRequest": {
                        "description": "Property filters for search",
                        "properties": {
                          "basementStatuses": {
                            "description": "Basement status types. Use for queries like 'finished basement'",
                            "items": {
                              "enum": [
                                "finished",
                                "partial",
                                "none",
                                "unfinished"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "bathrooms": {
                            "description": "Bathrooms range filter. Do not add default values if min or max is not specified",
                            "properties": {
                              "max": {
                                "description": "Maximum value",
                                "format": "double",
                                "type": "number"
                              },
                              "min": {
                                "description": "Minimum value",
                                "format": "double",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "bedrooms": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "Bedrooms range filter. Do not add default values if min or max is not specified"
                          },
                          "commuteTimeFilter": {
                            "description": "Use for commute or 'near' queries. For example, 'near DFW airport' can also be expressed via this filter.ALWAYS INCLUDE a valid region in propertySearchRegionFiltersRequest when passing this filter.destinationLatLong is REQUIRED when using this filter.",
                            "properties": {
                              "destinationLatLong": {
                                "$ref": "#/$defs/LatLong",
                                "description": "The latitude and longitude coordinates for the commute destination"
                              },
                              "maxCommuteTimeInMinutes": {
                                "description": "The maximum commute time in minutes that is considered acceptable. The commute API accepts time values in the inclusive range [5, 120]",
                                "format": "int32",
                                "type": "integer"
                              },
                              "mode": {
                                "description": "The mode of transportation for the commute",
                                "enum": [
                                  "driving",
                                  "transit",
                                  "walking",
                                  "biking"
                                ],
                                "type": "string"
                              },
                              "timeOfDay": {
                                "description": "The time of day for the commute",
                                "enum": [
                                  "now",
                                  "rushHour",
                                  "offPeak"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "daysOnZillow": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "Days on Zillow range filter. Do not add default values if min or max is not specified"
                          },
                          "exclude": {
                            "description": "Exclude flags to apply such as pending, etc",
                            "items": {
                              "enum": [
                                "noHoaData",
                                "unmappable",
                                "pending",
                                "underContract",
                                "contingent",
                                "acceptingBackupOffers",
                                "builderPlanInCommunityWithLotData",
                                "pendingContingentUnderContractUnlessAcceptingBackupOffers",
                                "acceptingBackupOffersUnlessPendingContingentUnderContract",
                                "seniorCommunity"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "forSaleListingStatuses": {
                            "description": "Listing status filter for FOR_SALE searches only (not rentals or sold). Values: active, comingSoon, zillowPreview. If not set, all are included by default. To exclude a status, list only the ones the user DOES want (omit the unwanted ones).",
                            "items": {
                              "enum": [
                                "active",
                                "comingSoon",
                                "zillowPreview"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "hoaFeesPerMonth": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "HOA fees per month range filter. Do not add default values if min or max is not specified"
                          },
                          "homeStatuses": {
                            "description": "Home statuses to include. Three categories: (1) Rentals: use ONLY forRent by itself. (2) Recently sold: use ONLY recentlySold by itself. (3) For sale: any combination of preforeclosure, foreclosed, fsba, fsbo, auction, foreclosure, newConstruction, newConstructionLot — defaults applied by server if not specified. Do NOT mix forRent or recentlySold with other statuses. NOTE: 'coming soon' is NOT a homeStatus — use forSaleListingStatuses instead.",
                            "items": {
                              "enum": [
                                "recentlySold",
                                "preforeclosure",
                                "foreclosed",
                                "forRent",
                                "fsba",
                                "fsbo",
                                "auction",
                                "foreclosure",
                                "newConstruction",
                                "newConstructionLot"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "homeTypes": {
                            "description": "Home types to include such as singleFamily, townhome, condo, etc. Only include this field when the user explicitly specifies a home type (e.g., 'condo', 'house', 'townhome'). Do not infer home types from context unless explicitly mentioned.",
                            "items": {
                              "enum": [
                                "townhome",
                                "land",
                                "manufactured",
                                "multiFamily",
                                "apartment",
                                "condo",
                                "singleFamily"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "keywords": {
                            "description": "Keywords to search for in the property description.You may specify multiple keywords (e.g., 'pool, fireplace'), this applies AND across all keywords.Do not use for filtering neighborhoods. Use propertySearchRegion field instead for neighborhood related filtering.Supported set includes - pool, fireplace etc. that are property attributes.The server will execute a semantic search on the keywords. Do not send multiple similar keywordsLimit the total length of all keywords to 100 characters",
                            "type": "string"
                          },
                          "livingAreaSqft": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "House square footage range filter. Do not add default values if min or max is not specified"
                          },
                          "locationForNearbySort": {
                            "$ref": "#/$defs/LatLong",
                            "description": "Location for nearby sort. It is required when sortSelection is set to 'nearby'"
                          },
                          "lotSizeSqft": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "Lot size (sqft) range filter. Do not add default values if min or max is not specified"
                          },
                          "monthlyCostFilter": {
                            "description": "Monthly mortgage cost filter for homes FOR SALE when user specifies monthly payment budget. Use this instead of salePrice when user mentions monthly mortgage payments.Interest rate is optional and will be computed by the server. monthlyCost IS REQUIRED.",
                            "properties": {
                              "creditScoreBucket": {
                                "description": "Credit score bucket for mortgage calculation.",
                                "enum": [
                                  "cs720Plus",
                                  "cs660_719",
                                  "cs620_659",
                                  "cs580_619",
                                  "cs579Below"
                                ],
                                "type": "string"
                              },
                              "downPaymentAmount": {
                                "description": "Down payment amount in dollars. Defaults to 0 if not provided.",
                                "format": "int32",
                                "type": "integer"
                              },
                              "interestRate": {
                                "description": "Interest rate as a decimal (e.g., 0.05 for 5%). Will be computed by server based on other fields, if not provided.",
                                "format": "double",
                                "type": "number"
                              },
                              "loanTerm": {
                                "description": "Loan term in years",
                                "format": "int32",
                                "type": "integer"
                              },
                              "monthlyCost": {
                                "$ref": "#/$defs/MinMaxInt",
                                "description": "Monthly mortgage payment range. Do not add default values if min or max is not specified"
                              }
                            },
                            "type": "object"
                          },
                          "parkingSpots": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "Parking spots range filter. Do not add default values if min or max is not specified"
                          },
                          "petsRestrictions": {
                            "description": "Allowed pet restrictions. Only use this filter for rentals. Only use this field if homeStatuses contains exclusively forRent and nothing else.",
                            "items": {
                              "enum": [
                                "largeDogs",
                                "smallDogs",
                                "cats"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "rentalAvailabilityDate": {
                            "description": "Rental availability date filter for rentals only. Only use this field if homeStatuses contains exclusively forRent and nothing else.",
                            "format": "date",
                            "type": "string"
                          },
                          "rentalMonthlyPayment": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "Rental monthly payment range filter for RENTALS ONLY. Only use this field if homeStatuses contains exclusively forRent and nothing else. Do not add default values if min or max is not specified"
                          },
                          "rentalShowOnly": {
                            "description": "Show-only flags for property amenities and housing types for RENTALS such as pool, assignedParking, acceptsRentalApplications, etc. Can only be used for rental queries. Only use this field if homeStatuses contains exclusively forRent and nothing else.",
                            "items": {
                              "enum": [
                                "singleStory",
                                "inUnitLaundry",
                                "assignedParking",
                                "openHouses",
                                "priceReduction",
                                "waterfront",
                                "airConditioning",
                                "pool",
                                "acceptsRentalApplications",
                                "zillowOwned",
                                "garage",
                                "housingConnector",
                                "approvedVirtualTour",
                                "tourItNow",
                                "hasHardwoodFloor",
                                "hasDisabledAccess",
                                "areUtilitiesIncluded",
                                "roomForRent",
                                "highSpeedInternetAvailable",
                                "elevatorAccess",
                                "instantTourAvailable",
                                "shortTermLease",
                                "furnished",
                                "outdoorSpace",
                                "controlledAccess",
                                "noPetsAllowed",
                                "seniorCommunity",
                                "isLikelyStandardTourable",
                                "incomeRestricted"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "rentalSpecialHousingTypes": {
                            "description": "Special housing types such as student, senior, etc. This should ONLY BE USED FOR RENTAL queries. Only use this field if homeStatuses contains exclusively forRent and nothing else.",
                            "items": {
                              "enum": [
                                "student",
                                "senior",
                                "military",
                                "disabled",
                                "incomeRestricted"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "salePrice": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "Purchase price range filter for homes FOR SALE. DO NOT USE for rentals - use rentalMonthlyPayment instead. Do not add default values if min or max is not specified"
                          },
                          "saleShowOnly": {
                            "description": "Show-only flags for property amenities and housing types for homes FOR SALE such as pool, garage, openHouses, etc. Can only be used for sale queries.",
                            "items": {
                              "enum": [
                                "singleStory",
                                "inUnitLaundry",
                                "openHouses",
                                "priceReduction",
                                "waterfront",
                                "airConditioning",
                                "pool",
                                "zillowOwned",
                                "garage",
                                "approvedVirtualTour",
                                "tourItNow",
                                "seniorCommunity",
                                "isLikelyStandardTourable"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "sortAscending": {
                            "description": "Sort ascending (true) or descending (false). Use if the user has specified a sort order such as price.",
                            "type": "boolean"
                          },
                          "sortSelection": {
                            "description": "Sort order for the search results. Defaults to personalized, only use if user has specified a sort order such as price.With nearby sort, locationForNearbySort is REQUIRED.",
                            "enum": [
                              "daysOn",
                              "yearBuilt",
                              "rentalDays",
                              "price",
                              "lotArea",
                              "livingArea",
                              "beds",
                              "recentlyChanged",
                              "baths",
                              "personalized",
                              "nearby",
                              "rentalPriorityScore",
                              "rentalPriorityScoreCandidate"
                            ],
                            "type": "string"
                          },
                          "viewTypes": {
                            "description": "Preferred view types such as water, mountain, etc.",
                            "items": {
                              "enum": [
                                "water",
                                "city",
                                "territorial",
                                "park",
                                "mountain"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "yearBuilt": {
                            "$ref": "#/$defs/MinMaxInt",
                            "description": "Year built range filter. Do not add default values if min or max is not specified"
                          }
                        },
                        "type": "object"
                      },
                      "propertySearchRegionFiltersRequest": {
                        "description": "PropertySearchRegion filters. Pass one of the region filters.",
                        "properties": {
                          "customPolygonWKT": {
                            "description": "Custom polygon in WKT format with up to 300 points",
                            "type": "string"
                          },
                          "propertySearchRegions": {
                            "description": "List of geographic regions to filter by. Send only one of: propertySearchRegions, schoolName, schoolDistrictName, or customPolygonWKT.",
                            "items": {
                              "properties": {
                                "name": {
                                  "description": "Name of the region in the format neighborhood, state or city, state. Ex: Seattle, WA ; Capitol Hill, WA",
                                  "type": "string"
                                },
                                "regionDisplayName": {
                                  "description": "Display name of the region. Ex: Capitol Hill, Issaquah",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name",
                                "regionDisplayName"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "recommendationReasons": {
                            "description": "Short, concise (limit to 30 characters each) reasons for recommending these regions (e.g., 'public transit', 'vibrant nightlife').Used for UI display pills. Only include when you are making a suggestion about a region to search in. If the user has explicitly stated the region for the search, this field should be ignoredDo not include property filters in the reasons such as beds, baths, etc.Examples: query: I'm looking to move to a neighborhood in Seattle with good public transit, recommendation reasons: ['public transit']Examples: query: I'm buy a 3+ bed house in Bellevue, recommendation reasons: Ignored because the user has explicitly stated the region for the searchNote: This is not a filter and will have no impact on the result set.",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "schoolDistrictName": {
                            "description": "Name of the school district to filter by. Example: \"Seattle School District, WA\"",
                            "type": "string"
                          },
                          "schoolName": {
                            "description": "Name of the school catchment area to filter by. Example: \"Niles School, Seattle, WA\"",
                            "type": "string"
                          },
                          "userSpecifiedPivotArea": {
                            "description": "The primary geographic area the user mentioned in their search query (e.g., 'Seattle, WA' for 'Within 1.5h of Seattle'). This field is optional and should only be included when the user has specified a specific geographic area in their query.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "required": [
                  "request"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": ""
              }
            },
            {
              "name": "get_zestimate",
              "title": "Get Zestimate",
              "description": "- When to use: For queries about the estimated home value (Zestimate) for a property\n  and/or the confidence in that valuation, including WHY it has that value and how it\n  compares to similar properties.\n\n- Args:\n    - address (required): Full property address.\n\n- Returns:\n    str: Comprehensive valuation report including:\n        - Current Zestimate and estimated sales range (confidence indicator)\n        - Factors explaining and interpretting the valuation, including an indication that a prior sale or listing price\n          is a key input, when appropriate\n        - Property features (bedrooms, bathrooms, sqft, year built, renovations)\n        - Comparable properties with their Zestimates and sale prices\n        - Detailed explanations of feature differences between subject and comparables\n        - General model description when comparables are not available\n        - Disclaimer text which should always be included at the end of the response\n        If Zestimate is missing, returns text explaining why.\n\n- Behavior and content rules:\n    - Use the output of the tool verbatim (no edits, no paraphrasing).\n    - If the listing price is noted as a key input to this properties Zestimate, it is important to say this in the response\n    - If a recent sale price is noted as a key input to this properties Zestimate, it is important to say this in the response\n    - Include the disclaimer text provided verbatim at the end of the response.\n    - The tool provides detailed comparable analysis - do not add or remove comparables.\n    - The explanations include feature differences (sqft, lot size, age, renovations) -\n      do not fabricate additional differences.\n    - When explaining what the Zestimate is, use the disclaimer text provided verbatim.\n    - Do not cite, compare with, or incorporate any external AVM sources. Use only the\n      returned Zestimate, ranges, and comparables provided.\n    - Do not fabricate values. If the tool does not return a numerical value, do not\n      estimate or infer a number.\n    - Do not speculate on returned outputs or comment on how fair a price or valuation is.\n\n- Do not call for:\n    - Queries asking the listing price or asking price of an on-market or for-sale home.\n      If the user asks about the price of a listed home, direct them to Zillow.com.\n    - Queries asking WHY a Zestimate changed over time (use get_zestimate_history instead).\n    - General questions about what a Zestimate is or accuracy (use get_zestimate_info instead).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get_rent_zestimate",
              "title": "Get Rent Zestimate",
              "description": "- When to use: For queries about the estimated monthly rental value (Rent Zestimate) for a property.\n- Args:\n    - address (required): Full property address.\n- Returns:\n    - str: Text with the current Rent Zestimate. If the Rent Zestimate is not available, returns text\n    explaining why the Rent Zestimate may be missing.\n- Behavior and content rules:\n    - When explaining what the Rent Zestimate is, use the output of the tool verbatim (no edits, no\n    paraphrasing).\n    - When explaining why a Rent Zestimate is missing, use the output of the tool verbatim (no edits,\n    no paraphrasing).\n    - Do not cite, compare with, or incorporate any external AVM sources. Use only the returned Rent\n    Zestimate.\n    - Do not fabricate values. If the tool does not return a numerical value, do not estimate or infer\n    a number.\n    - Do not speculate on returned outputs or comment on how fair a price or valuation is.\n- Do not call for:\n    - queries asking the actual rental price of a home, only the Zillow estimated value",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get_zestimate_history",
              "title": "Get Zestimate History",
              "description": "- When to use: A user asks for how a Zestimate for a property has changed over time historically.\n- Args:\n    - address (required): Full property address.\n- Returns:\n    - json with the following keys:\n        - address: Full property address.\n        - disclaimer: The disclaimer text which should always be included at the end of the response\n        - current_zestimate: The current Zestimate value.\n        - percentage_changes: A dictionary of key value pairs where the key is the date in yyyy-mm-dd format and the value is the\n        percentage change in Zestimate since the given date\n        - If the historical Zestimate values are not available, returns text explaining why the Zestimate history may be missing.\n- Behavior and content rules:\n    - Never speculate on returned outputs or comment on how fair a price or valuation is\n    - Do not use to predict forward appreciation ONLY use pre-computed historical Zestimate percentages provided.\n    - Do not fabricate values. If the tool does not return a numerical value, do not estimate or infer a number.\n    - Include the disclaimer text provided verbatim at the end of the response.\n- Do not call for:\n    - Use when a user asks about a sudden change in value of their home.\n    - queries asking why a Zestimate has changed.\n    - For queries about actual home price changes but direct the user to Zillow.com",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              },
              "outputSchema": {
                "description": "Response model for Odyssey zestimate history endpoint (backward compatible).",
                "properties": {
                  "address": {
                    "description": "The full property address",
                    "type": "string"
                  },
                  "current_zestimate": {
                    "description": "The current Zestimate value",
                    "type": "integer"
                  },
                  "disclaimer": {
                    "description": "The disclaimer text which should always be included at the end of the response",
                    "type": "string"
                  },
                  "percentage_changes": {
                    "additionalProperties": {
                      "type": "number"
                    },
                    "description": "A dictionary of key value pairs where the key is the date in yyyy-mm-dd format and the value is the percentage change in Zestimate since the given date",
                    "type": "object"
                  }
                },
                "required": [
                  "address",
                  "current_zestimate",
                  "percentage_changes",
                  "disclaimer"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get_zestimate_info",
              "title": "Get Zestimate Info",
              "description": "- When to use: For queries about general Zestimate information, accuracy, definitions, or reasons why\nZestimates might be missing.\n- Args:\n    - question_type (required): The type of Zestimate question to answer. Options:\n        - what_is_zestimate: Explains what the Zestimate is and how it works\n        - zestimate_accuracy: Information about Zestimate accuracy and error rates\n        - what_is_rent_zestimate: Explains what the Rent Zestimate is\n        - zestimate_missing: Explains why a Zestimate might be missing\n        - rent_zestimate_missing: Explains why a Rent Zestimate might be missing\n- Returns:\n    - str: Detailed information answering the specific question type\n- Behavior and content rules:\n    - Use the output of the tool verbatim (no edits, no paraphrasing).\n    - Do not cite, compare with, or incorporate any external sources.\n    - Do not fabricate values or information beyond what is provided.\n    - Use only Zestimate information for queries about the Zestimate and only\n      rent zestimate information for queries about the rent zestimate\n- Do not call for:\n    - Queries asking for actual property valuations (use get_zestimate or get_rent_zestimate instead)\n    - Queries asking about specific property addresses",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "question_type": {
                    "description": "Enum for different types of Zestimate-related questions.",
                    "enum": [
                      "what_is_zestimate",
                      "zestimate_accuracy",
                      "what_is_rent_zestimate",
                      "zestimate_missing",
                      "rent_zestimate_missing",
                      "on_vs_off_market_zestimate",
                      "zestimate_accuracy_methodology",
                      "zestimate_accuracy_influences"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "question_type"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "interestRateMortgagePaymentSimulator",
              "title": "Mortgage Rate \u0026 Payment Simulator by Zillow",
              "description": "Simulates monthly mortgage payments using real-time interest rates from Zillow Home Loans LLC (NMLS #10287). Retrieves current daily mortgage rates nationally or by U.S. state, and calculates estimated monthly payments based on home price, down payment, credit score, and location. Use this tool when users ask about today's mortgage rates, want to estimate a monthly payment for a specific home price, or want to see how changes in rate, credit score, or down payment affect their payment.\nInputs (all optional): homePrice (USD, optional), downPayment (USD, optional), creditScore (integer, e.g. 720, optional), usState (state or city/state, optional), loanAmount (USD, optional), hoADues (USD, optional).\nReturns: current interest rate and APR, estimated monthly payment breakdown, and how payments shift under different rate or input scenarios. Powered by Zillow Home Loans LLC (NMLS #10287).\n\u003cdisplay_rules\u003e\nEach field in the response includes a name, value, and description. Display all three for every field. Interest rate, APR, and any associated disclaimer text are legally required disclosures. Always show them exactly as returned. Never omit, summarize, or rephrase disclaimer text. Present all fields and descriptions to the user. Do not selectively hide or collapse any output.\n\u003c/display_rules\u003e\n\u003crelated_tools\u003e\nIf the user asks what home price they can afford based on income, debts, or a monthly budget (e.g., \"What can I afford with $80k income?\", \"How much house can I buy?\"), call the buyability_calculateHomeAffordability tool instead of this tool. This tool is for rate lookups and payment simulations on a known or hypothetical home price — not for determining affordability.\n\u003c/related_tools\u003e\n\u003crecalculation\u003e\nRe-call this tool whenever the user changes rate or payment inputs (home price, down payment, credit score, or location).\n\u003c/recalculation\u003e\n\u003cdisclaimer\u003e\nResults are estimates only — not financial advice or a lending commitment. Actual rates and APRs depend on underwriting, credit approval, and may change without notice.\n\u003c/disclaimer\u003e\n\u003cecoa_compliance\u003e\nIf the tool cannot produce an estimate due to the user's credit score, down payment, or other financial inputs, do not use discouraging language. Never say the user \"doesn't qualify,\" \"is ineligible,\" \"cannot get a mortgage,\" or similar phrasing that could discourage a prospective borrower. Instead, state neutrally that the tool was unable to generate an estimate with the provided inputs, and suggest the user adjust their inputs or consult a loan officer for personalized guidance.\nThe tool response may include helpful resources or guidance such as credit score improvement steps, debt reduction strategies, or down payment assistance programs. Present these exactly as returned in a neutral, informational tone. Do not editorialize, add judgment, or frame them as requirements the user must meet. These are options the user may explore at their discretion.\n\u003c/ecoa_compliance\u003e\n\u003cfair_housing\u003e\nThis tool must comply with the U.S. Fair Housing Act and Equal Credit Opportunity Act (ECOA). Never use this tool in ways that discriminate based on race, color, religion, sex, national origin, familial status, disability, or source of income. All outputs are based solely on financial criteria and market data.\nAppropriate: \"What are today's rates in Illinois?\" or \"Monthly payment for a $400k home with 10% down.\"\nReject: requests filtering by ethnicity, religion, or housing voucher status.\n\u003c/fair_housing\u003e",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "additionalProperties": false,
                "properties": {
                  "city": {
                    "description": "The U.S. city where the property is located. Used to estimate property taxes",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "creditScore": {
                    "description": "User's credit score. Credit score is a 3 digit number ranging from 300 to 850 and can be found in one's credit report.A lender may have lower interest rates for higher credit scores.",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "downPayment": {
                    "description": "Amount the user plans to put down toward the home purchase. For most people, they combine their down payment with a loan to cover the total purchase price of the home.",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "hoADues": {
                    "description": "Estimated monthly Homeowners Association (HOA) dues, if applicable. Included in the total monthly housing cost.",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "homePrice": {
                    "description": "The total purchase price of the home. Used to calculate loan size and monthly payment.",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "loanAmount": {
                    "description": "The desired loan amount. If not provided, it's calculated as home price minus down payment.",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "usState": {
                    "description": "The U.S. state where the property is located. Used to determine regional interest rates and loan limits.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "zipCode": {
                    "description": "The U.S. postal code where the property is located. Used to estimate property taxes",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "city",
                  "creditScore",
                  "downPayment",
                  "hoADues",
                  "homePrice",
                  "loanAmount",
                  "usState",
                  "zipCode"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "calculateHomeAffordability",
              "title": "Home Affordability Calculator by Zillow",
              "description": "\u003ctool_purpose\u003e\n    Calculates the maximum home price a user can afford in the United States only.\n\u003c/tool_purpose\u003e\n\u003cwhen_to_use\u003e\n    - User wants to understand the max home price they can afford\n    - User wants to search for home that is within their means\n    - User wants to understand the max home price and the monthly payment amounts\n\u003c/when_to_use\u003e\n\u003cwhen_not_to_use\u003e\n    - User wants to know what the current mortgage rates are\n    - User knows the home price they are looking at and then want to understand how much it costs monthly\n    - User knows the home price and they are looking to see what mortage rates they might get for that loan to property price ratio\n\u003c/when_not_to_use\u003e\n\u003cinputs\u003e\n    - All inputs are optional — missing values use sensible defaults.\n    - Safe to call with no inputs or partial inputs.\n    - Inputs (all optional):\n        annual_income (gross USD)\n        down_payment (USD)\n        credit_score (e.g. 720)\n        monthly_debts (USD/month eg car payments, credit card payments)\n        location (city/state/ZIP)\n        monthly_mortgage_budget (max desired payment).\n\u003c/inputs\u003e\n\u003creturns\u003e\n    - Returns two estimates:\n        Target BuyAbility (comfortable affordability — the home price at 36% DTI or within user's monthly budget)\n        Max BuyAbility (stretch affordability — the maximum home price the user may be eligible for).\n        The estimated monthly payment breakdown (principal \u0026 interest, property tax, insurance, PMI, HOA)\n        loan details (type, rate, APR, points), and all assumed input values.\n        Powered by Zillow Home Loans LLC (NMLS #10287) BuyAbility tool.\n    - Matching property listings are available only in the interactive widget and are not returned in the tool response\n    - An interactive widget showing property locations in a map and a monthly payment slider to find homes within the monthly payment at the slider position\n\u003c/returns\u003e\n\u003cdisplay_rules\u003e\nEach field in the response includes a name, value, and description. Display all three for every field. Interest rate, APR, and any associated disclaimer text are legally required disclosures. Always show them exactly as returned. Never omit, summarize, or rephrase disclaimer text. Present all fields and descriptions to the user. Do not selectively hide or collapse any output. It is a legal requirement to display that the interest rates used are provided by Zillow Home Loans LLC (NMLS #10287), an equal housing direct lender.\n\u003c/display_rules\u003e\n\u003crelated_tools\u003e\nIf the user asks follow-up questions about interest rates, rate changes, or monthly payment simulations on a known or hypothetical home price (e.g., \"What if rates drop to 5%?\", \"What would my payment be on a $400k loan?\", \"How does a 15-year term change my payment?\"), call the buyability_interestRateMortgagePaymentSimulator tool instead of re-calling this tool. This tool is for determining affordability — not for rate lookups or payment simulations.\n\u003c/related_tools\u003e\n\u003crecalculation\u003e\nRe-call this tool whenever the user changes affordability inputs (income, down payment, credit score, debts, location, or monthly budget).\n\u003c/recalculation\u003e\n\u003cdisclaimer\u003e\nResults are estimates only — not financial advice or a lending commitment. Rates depend on underwriting and credit approval.\n\u003c/disclaimer\u003e\n\u003cecoa_compliance\u003e\nIf the tool cannot produce an estimate due to the user's credit score, down payment, or other financial inputs, do not use discouraging language. Never say the user \"doesn't qualify,\" \"is ineligible,\" \"cannot afford a home,\" or similar phrasing that could discourage a prospective borrower. Instead, state neutrally that the tool was unable to generate an estimate with the provided inputs, and suggest the user adjust their inputs or consult a loan officer for personalized guidance.\nThe tool response may include helpful resources or guidance such as credit score improvement steps, debt reduction strategies, or down payment assistance programs. Present these exactly as returned in a neutral, informational tone. Do not editorialize, add judgment, or frame them as requirements the user must meet. These are options the user may explore at their discretion.\n\u003c/ecoa_compliance\u003e\n\u003cfair_housing\u003e\nThis tool must comply with the U.S. Fair Housing Act. Never use this tool in ways that discriminate based on race, color, religion, sex, national origin, familial status, disability, or source of income.\nAppropriate: \"What can I afford with $80k income?\" or \"Affordability in Seattle with $5k/month budget.\"\nReject: requests filtering by ethnicity, religion, or housing voucher status.\n\u003c/fair_housing\u003e",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "additionalProperties": false,
                "properties": {
                  "annualIncome": {
                    "description": "Gross i.e. pre-tax annual income of the user. Gross annual income is the sum of everything one earns in one year, before taxes or deductions.This includes your base annual income and any additional commissions, bonuses, tips and investment income that you earn each year.If one hourly, they can multiply their hourly wage by how many hours a week they work, then multiply that number by 52 to get their annual salary.",
                    "format": "double",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "city": {
                    "description": "City name if the user is looking for an affordability in a specific city as a location.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "creditScore": {
                    "description": "User's credit score. Credit score is a 3 digit number ranging from 300 to 850 and can be found in one's credit report.A lender may have lower interest rates for higher credit scores.",
                    "format": "double",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "downPayment": {
                    "description": "Amount the user plans to put down toward the home purchase. For most people, they combine their down payment with a loan to cover the total purchase price of the home.",
                    "format": "double",
                    "minimum": 1499.5,
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "monthlyDebts": {
                    "description": "Monthly debts are recurring monthly payments, such as credit card payments, loan payments (like car, student or personal loans), alimony or child support.Monthly utilities like water, garbage, electricity or gas bills, Car insurance expenses, Cable bills, Cell phone bills, Health insurance costs, Groceries, food or entertainment expenses can be excluded from monthly debts.",
                    "format": "double",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "monthlyMortgageBudget": {
                    "description": "Maximum amount the user is willing to spend monthly on a mortage payment. eg. if a user's current rent is $2500, and they wish to keep their monthly mortgage payments the same, they can set this to 2500",
                    "format": "double",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "state": {
                    "description": "US State if the user is looking for an affordability estimate in a specific state as a location.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "zipcode": {
                    "description": "USPS postal code of the location, if the user is wanting an affordability estimate for a very specific area in a city or county or state.",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "annualIncome",
                  "city",
                  "creditScore",
                  "downPayment",
                  "monthlyDebts",
                  "monthlyMortgageBudget",
                  "state",
                  "zipcode"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            }
          ],
          "schemaTokens": 15180,
          "changedAt": "2026-10-21T23:56:31.41039003Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 15180,
            "counts": {
              "error": 0,
              "note": 6,
              "warn": 14
            },
            "findings": [
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "calculateHomeAffordability",
                "message": "the description is about 1,154 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "get_zestimate",
                "message": "the description is about 627 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "interestRateMortgagePaymentSimulator",
                "message": "the description is about 873 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "zillow_city_neighborhood_real_estate_information",
                "message": "the description is about 2,034 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "zillow_property_search",
                "message": "the description is about 2,481 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "zillow_city_neighborhood_real_estate_information",
                "message": "its one parameter, request, has no description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "zillow_property_details_by_address_or_name",
                "message": "its one parameter, query, has no description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "zillow_property_search",
                "message": "its one parameter, request, has no description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "zillow_property_search",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC20",
                "severity": "warn",
                "tool": "zillow_city_neighborhood_real_estate_information",
                "message": "the description steers the model",
                "fix": "Say what the tool is good at and let the model choose."
              },
              {
                "rule": "TC20",
                "severity": "warn",
                "tool": "zillow_property_search",
                "message": "the description steers the model",
                "fix": "Say what the tool is good at and let the model choose."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "calculateHomeAffordability",
                "message": "the definition is about 1,900 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "zillow_city_neighborhood_real_estate_information",
                "message": "the definition is about 3,033 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "zillow_property_search",
                "message": "the definition is about 5,762 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC03",
                "severity": "note",
                "tool": "zillow_city_neighborhood_real_estate_information",
                "message": "the name is 48 characters",
                "fix": "Keep names under 40 characters so the client's prefix fits."
              },
              {
                "rule": "TC03",
                "severity": "note",
                "tool": "zillow_property_details_by_address_or_name",
                "message": "the name is 42 characters",
                "fix": "Keep names under 40 characters so the client's prefix fits."
              },
              {
                "rule": "TC11",
                "severity": "note",
                "tool": "get_rent_zestimate",
                "message": "a parameter is documented in the description but not in the schema: address",
                "fix": "Put each one in its property's description (in Python: Annotated[str, Field(description=...)])."
              },
              {
                "rule": "TC11",
                "severity": "note",
                "tool": "get_zestimate",
                "message": "a parameter is documented in the description but not in the schema: address",
                "fix": "Put each one in its property's description (in Python: Annotated[str, Field(description=...)])."
              },
              {
                "rule": "TC11",
                "severity": "note",
                "tool": "get_zestimate_history",
                "message": "a parameter is documented in the description but not in the schema: address",
                "fix": "Put each one in its property's description (in Python: Annotated[str, Field(description=...)])."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "5 of 9 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "updatedAt": "2026-10-31T01:29:52.564564567Z"
      }
    },
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "Agentcard",
        "b": "Zillow Group",
        "name": "Vendor"
      },
      {
        "a": "https://api.agentcard.sh",
        "b": "https://mcp.zillow.com/api/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary. `@agent-cards/commerce-sdk` and the `agent-cards` CLI ship a licence of Agentcard Corporation that allows running them only to use Agentcard's services and forbids copying, reverse engineering and benchmarking a competing product. The repository they name is private",
        "b": "Proprietary hosted service. No source published",
        "name": "Licence"
      },
      {
        "a": "1",
        "b": "9",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-30",
        "b": "2026-10-19",
        "name": "Last release"
      },
      {
        "a": "2026-07-10",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-21",
        "b": "2025-11-15",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2.7k npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "opencommerce scores 62 (B) on agent readiness against Zillow in Claude's 28.7 (F), and leads in 6 of 7 scored categories. Zillow in Claude leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, opencommerce or Zillow in Claude?"
      },
      {
        "answer": "Yes. opencommerce has a hosted endpoint at https://api.agentcard.sh and Zillow in Claude at https://mcp.zillow.com/api/v2.",
        "question": "Can an agent call opencommerce and Zillow in Claude without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 43 against 15",
          "Schema \u0026 documentation, 81 against 9",
          "Agent ergonomics, 69 against 33",
          "Security \u0026 auth, 68 against 32",
          "Maintenance \u0026 community, 75 against 35",
          "Transparency \u0026 trust, 63 against 45"
        ],
        "also": null,
        "goodFor": "A company building a chat agent that buys for US shoppers at many online stores, restaurants and airlines through one tool, with payments approved by the shopper's passkey.",
        "slug": "opencommerce",
        "watchFor": "The tool description is 57 rules and about 14,500 characters, read on every call"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 50 against 40"
        ],
        "also": [
          "No key needed to call it"
        ],
        "goodFor": "A person's home search through Claude, for US homes and rentals, Zestimates and affordability.",
        "slug": "zillow-claude",
        "watchFor": "No public tool reference. The tool definitions weren't read, and Zillow's own connector page answered with a bot check"
      }
    ],
    "job": {
      "capability": "shopping.search",
      "name": "Product search for shoppers"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-creators-api-vs-opencommerce.json",
        "title": "Amazon Creators API vs opencommerce",
        "url": "https://www.anchorterminal.com/compare/amazon-creators-api-vs-opencommerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-creators-api-vs-zillow-claude.json",
        "title": "Amazon Creators API vs Zillow in Claude",
        "url": "https://www.anchorterminal.com/compare/amazon-creators-api-vs-zillow-claude"
      },
      {
        "json": "https://www.anchorterminal.com/compare/best-buy-vs-opencommerce.json",
        "title": "Best Buy Developer API vs opencommerce",
        "url": "https://www.anchorterminal.com/compare/best-buy-vs-opencommerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/best-buy-vs-zillow-claude.json",
        "title": "Best Buy Developer API vs Zillow in Claude",
        "url": "https://www.anchorterminal.com/compare/best-buy-vs-zillow-claude"
      },
      {
        "json": "https://www.anchorterminal.com/compare/etsy-vs-opencommerce.json",
        "title": "Etsy Open API v3 vs opencommerce",
        "url": "https://www.anchorterminal.com/compare/etsy-vs-opencommerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/etsy-vs-zillow-claude.json",
        "title": "Etsy Open API v3 vs Zillow in Claude",
        "url": "https://www.anchorterminal.com/compare/etsy-vs-zillow-claude"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencommerce-vs-shop-mcp.json",
        "title": "opencommerce vs Shop MCP",
        "url": "https://www.anchorterminal.com/compare/opencommerce-vs-shop-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencommerce-vs-walmart-affiliate-api.json",
        "title": "opencommerce vs Walmart Affiliate Marketing API",
        "url": "https://www.anchorterminal.com/compare/opencommerce-vs-walmart-affiliate-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencommerce-vs-walmart-agent-gateway.json",
        "title": "opencommerce vs Walmart Agent Gateway",
        "url": "https://www.anchorterminal.com/compare/opencommerce-vs-walmart-agent-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shop-mcp-vs-zillow-claude.json",
        "title": "Shop MCP vs Zillow in Claude",
        "url": "https://www.anchorterminal.com/compare/shop-mcp-vs-zillow-claude"
      },
      {
        "json": "https://www.anchorterminal.com/compare/walmart-affiliate-api-vs-zillow-claude.json",
        "title": "Walmart Affiliate Marketing API vs Zillow in Claude",
        "url": "https://www.anchorterminal.com/compare/walmart-affiliate-api-vs-zillow-claude"
      },
      {
        "json": "https://www.anchorterminal.com/compare/walmart-agent-gateway-vs-zillow-claude.json",
        "title": "Walmart Agent Gateway vs Zillow in Claude",
        "url": "https://www.anchorterminal.com/compare/walmart-agent-gateway-vs-zillow-claude"
      },
      {
        "json": "https://www.anchorterminal.com/compare/instacart-vs-opencommerce.json",
        "title": "Instacart Developer Platform API + MCP vs opencommerce",
        "url": "https://www.anchorterminal.com/compare/instacart-vs-opencommerce"
      }
    ],
    "scores": [
      {
        "by": 28,
        "edge": "opencommerce",
        "key": "reliability",
        "name": "Reliability",
        "opencommerce": 43,
        "weight": 16,
        "zillow-claude": 15
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 72,
        "edge": "opencommerce",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "opencommerce": 81,
        "weight": 13,
        "zillow-claude": 9
      },
      {
        "by": 36,
        "edge": "opencommerce",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "opencommerce": 69,
        "weight": 13,
        "zillow-claude": 33
      },
      {
        "by": 36,
        "edge": "opencommerce",
        "key": "security",
        "name": "Security \u0026 auth",
        "opencommerce": 68,
        "weight": 14,
        "zillow-claude": 32
      },
      {
        "by": 10,
        "edge": "zillow-claude",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "opencommerce": 40,
        "weight": 10,
        "zillow-claude": 50
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 40,
        "edge": "opencommerce",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "opencommerce": 75,
        "weight": 7,
        "zillow-claude": 35
      },
      {
        "by": 18,
        "edge": "opencommerce",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "opencommerce": 63,
        "weight": 7,
        "zillow-claude": 45
      }
    ],
    "summary": "opencommerce scores 62 (B) on agent readiness against Zillow in Claude's 28.7 (F), and leads in 6 of 7 scored categories. Zillow in Claude leads on payments \u0026 pricing. Both do product search for shoppers.",
    "tutorials": [],
    "verdicts": {
      "opencommerce": "One strictly typed buy tool covers search, cart, checkout and order updates, and every payment not covered by an auto-approval rule waits for the shopper's passkey. The tool's description runs to about 14.5 KB, the purchase API under it is undocumented, the monitoring page reports test passes rather than uptime, and the CLI says sign-ups are by invitation.",
      "zillow-claude": "Zillow's own keyless MCP connector for Claude, with nine tools for US home search, Zestimates, neighbourhood data and affordability. None of its tools writes anything. Its tool definitions, terms and privacy policy couldn't be read, and no status page, rate limits, changelog or security contact was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/opencommerce-vs-zillow-claude",
    "json": "https://www.anchorterminal.com/compare/opencommerce-vs-zillow-claude.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/opencommerce-vs-zillow-claude.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/opencommerce-vs-zillow-claude.min.md"
  },
  "markdown": "opencommerce scores 62 (B) on agent readiness against Zillow in Claude's 28.7 (F), and leads in 6 of 7 scored categories. Zillow in Claude leads on payments \u0026 pricing. Both do product search for shoppers.\n\n- opencommerce: grade B, 62/100, rank #528 of 1240. Markdown https://www.anchorterminal.com/tools/opencommerce.md · JSON https://www.anchorterminal.com/api/v1/tools/opencommerce.json\n- Zillow in Claude: grade F, 28.7/100, rank #1169 of 1240. Markdown https://www.anchorterminal.com/tools/zillow-claude.md · JSON https://www.anchorterminal.com/api/v1/tools/zillow-claude.json\n- Best shopping and order APIs for AI agents buying for a person: https://www.anchorterminal.com/best/shopping/index.md\n- All 32 shopping comparisons: https://www.anchorterminal.com/compare/shopping/index.md\n\n## Which one, for what\n\n### opencommerce (B)\n\nGood for: A company building a chat agent that buys for US shoppers at many online stores, restaurants and airlines through one tool, with payments approved by the shopper's passkey.\n\nAhead on:\n- Reliability, 43 against 15\n- Schema \u0026 documentation, 81 against 9\n- Agent ergonomics, 69 against 33\n- Security \u0026 auth, 68 against 32\n- Maintenance \u0026 community, 75 against 35\n- Transparency \u0026 trust, 63 against 45\n\nWatch for: The tool description is 57 rules and about 14,500 characters, read on every call\n\n### Zillow in Claude (F)\n\nGood for: A person's home search through Claude, for US homes and rentals, Zestimates and affordability.\n\nAhead on:\n- Payments \u0026 pricing, 50 against 40\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: No public tool reference. The tool definitions weren't read, and Zillow's own connector page answered with a bot check\n\n\n## Score by category\n\n| Category | Weight | opencommerce | Zillow in Claude | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 43 | 15 | opencommerce +28 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 81 | 9 | opencommerce +72 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 33 | opencommerce +36 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 32 | opencommerce +36 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 50 | Zillow in Claude +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 35 | opencommerce +40 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 63 | 45 | opencommerce +18 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **62 · B** | **28.7 · F** | |\n\n## Facts side by side\n\n| Fact | opencommerce | Zillow in Claude |\n| --- | --- | --- |\n| Kind | SDK + MCP | MCP server |\n| Vendor | Agentcard | Zillow Group |\n| Hosted endpoint | `https://api.agentcard.sh` | `https://mcp.zillow.com/api/v2` |\n| Transports | HTTP |  |\n| Auth | OAuth | None |\n| Pricing | Pay per use | Free |\n| x402 | no | no |\n| Licence | Proprietary. `@agent-cards/commerce-sdk` and the `agent-cards` CLI ship a licence of Agentcard Corporation that allows running them only to use Agentcard's services and forbids copying, reverse engineering and benchmarking a competing product. The repository they name is private | Proprietary hosted service. No source published |\n| Tools exposed | 1 | 9 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-10-30 | 2026-10-19 |\n| Terms last updated | 2026-07-10 | couldn't be read |\n| Privacy policy last updated | 2026-10-21 | 2025-11-15 |\n| Customer content may train models | not found in the text | couldn't be read |\n| Terms restrict automated access | yes | couldn't be read |\n| Terms restrict benchmarking | not found in the text | couldn't be read |\n| Terms or service can change without notice | not found in the text | couldn't be read |\n| Arbitration or class-action waiver | yes | couldn't be read |\n| Popularity | 2.7k npm/wk | none |\n| Agent reviews | none | 3/5 (4) |\n\n## Verdicts\n\n**opencommerce.** One strictly typed buy tool covers search, cart, checkout and order updates, and every payment not covered by an auto-approval rule waits for the shopper's passkey. The tool's description runs to about 14.5 KB, the purchase API under it is undocumented, the monitoring page reports test passes rather than uptime, and the CLI says sign-ups are by invitation.\n\n**Zillow in Claude.** Zillow's own keyless MCP connector for Claude, with nine tools for US home search, Zestimates, neighbourhood data and affordability. None of its tools writes anything. Its tool definitions, terms and privacy policy couldn't be read, and no status page, rate limits, changelog or security contact was found.\n\n## Before you call either\n\n### opencommerce\n\n1. Call `buy` with the shopper's words in `ask`, and set `confirm` true only after the shopper says yes to the cart you showed\n2. After a `timeout`, `unreachable` or `invalid_answer` error, read the conversation before sending the turn again, since the order may have gone through\n3. Show the cart's `max_charge` beside its total, because the approval holds up to that amount\n4. Use sandbox credentials for tests. `init` writes production credentials by default, and they place real orders\n5. Check a store with `GET /buy/merchants` before sending a shopper there, and suggest another store when it is `held_back` or `supported` is false\n\n### Zillow in Claude\n\n1. Use the server at https://mcp.zillow.com/api/v2 from Anthropic's directory, not the third-party Zillow servers in the MCP registry\n2. Search on objective criteria (location, price, size, amenities, schools, commute), since the release says the connector won't search on protected characteristics\n3. Treat Zestimates and affordability results as estimates, and hand tours, agent contact and financing to the person through Zillow's links\n4. Read tools/list before planning, because no tool reference is published and the input fields aren't documented anywhere we could read\n\n## Questions\n\n### Which is better for AI agents, opencommerce or Zillow in Claude?\n\nopencommerce scores 62 (B) on agent readiness against Zillow in Claude's 28.7 (F), and leads in 6 of 7 scored categories. Zillow in Claude leads on payments \u0026 pricing.\n\n### Can an agent call opencommerce and Zillow in Claude without installing anything?\n\nYes. opencommerce has a hosted endpoint at https://api.agentcard.sh and Zillow in Claude at https://mcp.zillow.com/api/v2.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/opencommerce-vs-zillow-claude.json, and with the fewest tokens: https://www.anchorterminal.com/compare/opencommerce-vs-zillow-claude.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"opencommerce\", \"b\": \"zillow-claude\"}`. From a terminal: `anchor compare opencommerce zillow-claude`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/opencommerce.json and https://www.anchorterminal.com/api/v1/tools/zillow-claude.json\n\n## Other comparisons with opencommerce or Zillow in Claude\n\n- [Amazon Creators API vs opencommerce](https://www.anchorterminal.com/compare/amazon-creators-api-vs-opencommerce.md)\n- [Amazon Creators API vs Zillow in Claude](https://www.anchorterminal.com/compare/amazon-creators-api-vs-zillow-claude.md)\n- [Best Buy Developer API vs opencommerce](https://www.anchorterminal.com/compare/best-buy-vs-opencommerce.md)\n- [Best Buy Developer API vs Zillow in Claude](https://www.anchorterminal.com/compare/best-buy-vs-zillow-claude.md)\n- [Etsy Open API v3 vs opencommerce](https://www.anchorterminal.com/compare/etsy-vs-opencommerce.md)\n- [Etsy Open API v3 vs Zillow in Claude](https://www.anchorterminal.com/compare/etsy-vs-zillow-claude.md)\n- [opencommerce vs Shop MCP](https://www.anchorterminal.com/compare/opencommerce-vs-shop-mcp.md)\n- [opencommerce vs Walmart Affiliate Marketing API](https://www.anchorterminal.com/compare/opencommerce-vs-walmart-affiliate-api.md)\n- [opencommerce vs Walmart Agent Gateway](https://www.anchorterminal.com/compare/opencommerce-vs-walmart-agent-gateway.md)\n- [Shop MCP vs Zillow in Claude](https://www.anchorterminal.com/compare/shop-mcp-vs-zillow-claude.md)\n- [Walmart Affiliate Marketing API vs Zillow in Claude](https://www.anchorterminal.com/compare/walmart-affiliate-api-vs-zillow-claude.md)\n- [Walmart Agent Gateway vs Zillow in Claude](https://www.anchorterminal.com/compare/walmart-agent-gateway-vs-zillow-claude.md)\n- [Instacart Developer Platform API + MCP vs opencommerce](https://www.anchorterminal.com/compare/instacart-vs-opencommerce.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-31",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "opencommerce vs Zillow in Claude",
        "url": ""
      }
    ],
    "description": "opencommerce scores 62 (B) to Zillow in Claude's 28.7 (F) for product search for shoppers. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "opencommerce B 62",
      "Zillow in Claude F 28.7",
      "scores"
    ],
    "h1": "opencommerce vs Zillow in Claude",
    "image": "https://www.anchorterminal.com/assets/og/compare-opencommerce-vs-zillow-claude.png",
    "path": "/compare/opencommerce-vs-zillow-claude",
    "published": "2026-10-01",
    "section": "tools",
    "title": "opencommerce vs Zillow in Claude for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-31",
    "url": "https://www.anchorterminal.com/compare/opencommerce-vs-zillow-claude"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 780
  },
  "version": 1
}
