Skip to main content
Glama
chrischall

onehome-mcp

by chrischall

Fetch a saved search and inflate its listings in one call

onehome_get_saved_search_with_listings
Read-onlyIdempotent

Retrieve a saved search and its full property listings in a single call, returning the saved search details, matching homes, count, and page info.

Instructions

Combo tool: the "show me my saved homes" flow in a single round trip. Internally runs GetSavedSearchBySearchId to fetch the saved search (name, filters, polygon, listingIds) and then GetSavedListings to inflate those listingIds into full property records — the same two-call sequence as calling onehome_get_saved_search followed by onehome_search_properties(saved_search_id=...), but exposed as one tool so the magic-link-to-listings consumer flow is a single MCP call. Returns { saved_search, listings, count, page_info }. Both saved_search_id and group_id default to the magic-link session context. Sort defaults to property.MajorChangeTimestamp DESC (Newest). Listings are returned via the GraphQL listing-card projection (buildGetSavedListings), which does NOT include PublicRemarks — so there is no raw description to opt back into here. Use onehome_get_property(listing_id) per row when you need the full description for a specific listing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
group_idNo
page_numNo
page_sizeNo
sort_fieldNoGraphQL dotted-path, e.g. property.MajorChangeTimestamp or property.ListPrice
sort_orderNo
saved_search_idNo
include_dislikesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. First observedv0.13.1

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, and idempotent hints, and the description adds substantial behavior beyond that: it runs two internal operations, returns a specific shape ({ saved_search, listings, count, page_info }), inherits defaults from magic-link session context, defaults sorting to Newest, and warns that PublicRemarks is absent from the listing-card projection. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense, with the core purpose front-loaded and each sentence adding distinct value. Some phrasing is implementation-heavy (GraphQL projection, buildGetSavedListings), but this is useful context for an MCP agent. Slightly verbose, yet not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a complex combo tool with no output schema and low parameter coverage, the description covers the essential call path: purpose, return shape, defaulting behavior, sort default, and the key data limitation. The main gap is lack of guidance on pagination parameters and include_dislikes, but the core invocation is well specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers only 14% of parameters with descriptions, so the description must compensate. It does clarify saved_search_id/group_id defaults and sort_field/sort_order behavior, but page_num, page_size, and include_dislikes remain semantically unexplained. Partial compensation but not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific composite verb-object pair: it fetches a saved search and inflates its listings in a single trip. It clearly distinguishes itself from siblings by naming the exact two-call sequence it replaces (onehome_get_saved_search followed by onehome_search_properties), so an agent can tell it apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly identifies the intended consumer flow ('magic-link-to-listings'), contrasts itself with the two-call alternative, and gives a concrete when-not-to-use rule: call onehome_get_property(listing_id) per row when the full listing description is needed. This is actionable usage guidance, not just a statement of function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.