Skip to main content
Glama

Server Details

Free human-backed apartment locating for Austin, Dallas & Houston, TX. A free locator books tours.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 58 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

A4.1/5.0

Scored across 9 tools

Disambiguation4/5

Most tools are clearly distinct (search_apartments vs get_apartment_details vs create_shortlist), and the research flow (request_apartment_research → get_research_request → request_research_tours) is well delineated. However, ask_a_locator and request_locator_help both route the renter to a human (Alexander), and create_shortlist vs request_apartment_research both center on a saved shortlist, creating mild overlap that descriptions mostly, but not entirely, resolve.

Naming Consistency5/5

All names are snake_case with a consistent verb_noun structure: ask_a_locator, check_answer, create_shortlist, get_apartment_details, get_research_request, request_apartment_research, request_locator_help, request_research_tours, search_apartments. The pattern is predictable across the whole set.

Tool Count5/5

Nine tools is well-scoped for an apartment locating service. Each tool covers a distinct step in the search → detail → shortlist → research → tour workflow, and the ask/check pair is justified by its polling design.

Completeness4/5

The surface covers the core lifecycle: search inventory, inspect a building, build a shortlist, request human research/help, poll results, and coordinate tours. Minor gaps exist—no tool to view or modify an existing saved shortlist, and no explicit comparison operation—but agents can work around these via the returned links and details.

Available Tools

9 tools
ask_a_locatorAsk a human locatorAInspect

Ask a question only a human can answer — current specials, real availability, lease flexibility, 'is the pool actually open'. A human locator replies during Central Time business hours, usually within a few hours. STRONGLY include the renter's contact with consent so the locator can follow up directly (agent sessions end; polling alone can strand an answer). Returns a question_id for check_answer as a bonus channel. Rate limited; batch related questions into one. Answers are point-in-time facts.

NameRequiredDescriptionDefault
cityNoMetro the question concerns.
agentNoName of the referring assistant/product.
contactNoThe renter's phone/email, supplied with their consent. Strongly recommended; otherwise immediately share contact_capture_url returned by this tool.
questionYesThe question for the human locator — specifics beat generalities.
apartmentsNoBuildings the question is about.

Output Schema

NameRequiredDescription
statusYes
guidanceNo
next_stepNo
question_idYes
contact_statusNo
contact_capture_urlNo

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: reply timing (Central Time business hours, usually within a few hours), rate limiting, the point-in-time nature of answers, and the warning that agent sessions end so polling alone can strand an answer. This is exactly the operational context annotations can't convey.

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?

Front-loaded with the core purpose, then escalates to the critical contact/consent guidance and rate-limit note. Dense but every clause carries information; the parenthetical about sessions ending is slightly verbose but earns its place.

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

Completeness5/5

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

An output schema exists so return values needn't be explained, yet the description still flags the question_id channel. Combined with timing, rate limits, and consent guidance, an agent has everything needed to invoke this correctly.

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?

Schema description coverage is 100%, so the schema already documents all five parameters. The description reinforces the consent requirement for contact and that specifics beat generalities for question, but adds no syntax or format detail beyond the schema — baseline 3 applies.

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?

States a specific verb+resource (ask a question to a human locator) and sharply scopes it with 'only a human can answer', plus concrete example questions. It also implicitly distinguishes itself from the polling sibling by noting it returns a question_id for check_answer.

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

Usage Guidelines4/5

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

Gives clear context for when to use it (real-time, human-only facts like current specials and availability) and operational guidance (batch related questions, rate limited, contact strongly recommended). It does not explicitly state when NOT to use it or name request_locator_help as an alternative, so it stops short of a 5.

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

check_answerCheck for a locator's answerA
Read-onlyIdempotent
Inspect

Poll the answer to an ask_a_locator question by question_id.

NameRequiredDescriptionDefault
question_idYesThe id returned by ask_a_locator.

Output Schema

NameRequiredDescription
noteNo
answerNo
statusYes
guidanceNo
questionNo
answered_atNo
question_idYes
contact_noteNo
contact_capture_urlNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that this is a polling operation (implying the answer may not be immediately available), which is useful context, but it does not disclose pending/failed states or retry expectations — the key behavioral detail for a poll tool.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the action, resource, and keying parameter all appear immediately.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the one parameter is covered. However, for a polling tool the description omits the behavior an agent most needs — what to do while the answer is unavailable — leaving a meaningful gap.

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?

Schema description coverage is 100% and the single parameter is fully documented in the schema as the id returned by ask_a_locator. The description's 'by question_id' adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (poll/check) and resource (the answer to an ask_a_locator question) keyed by question_id, and explicitly ties itself to the ask_a_locator sibling as the source of the id. Clear enough to distinguish from the sibling, though it doesn't contrast against other polling-style siblings.

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

Usage Guidelines3/5

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

Use of the word 'Poll' implies this is called after ask_a_locator and may need repeating until an answer exists, but the description never states when to call it, how often, or when to stop. Usage is implied rather than guided.

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

create_shortlistCreate a shareable shortlistAInspect

Turn finalist apartments into a Taco Street link (/my-list?s=...) that opens the renter's saved list with those buildings added — compare, AI Read, and free tour requests live there. Use the EXACT names returned by search_apartments.

NameRequiredDescriptionDefault
cityNoMetro, to disambiguate same-named buildings.
agentNoName of the referring assistant/product.
apartment_namesYesExact building names from search_apartments to save to the renter's list.

Output Schema

NameRequiredDescription
urlYes
noteNo
unmatchedNo
apartmentsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (write, non-idempotent, non-destructive, closed-world), so the bar is lower. The description adds real value beyond them: it discloses that buildings are appended to the renter's persistent saved list and that the return is a shareable /my-list?s=... URL with compare/AI Read/tour features. It doesn't warn about duplicate entries on repeat calls despite idempotentHint=false.

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?

Two sentences, front-loaded with the core action and output, followed by the critical naming constraint. Slightly padded by the feature list ('compare, AI Read, and free tour requests'), which is marketing color rather than calling guidance.

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?

An output schema exists, so the return value needn't be explained, and the description still usefully characterizes the returned link. It covers the write effect (buildings added to a saved list) and input sourcing; only edge cases like duplicate handling or the 10-item cap (already in schema) are left implicit.

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?

Schema coverage is 100%, so the schema fully documents all three parameters, making 3 the baseline. The description's 'Use the EXACT names returned by search_apartments' reinforces the apartment_names semantics but largely restates the schema's own wording, adding no new syntax or format detail.

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 names a specific action (turn finalist apartments into a shareable link) and a specific resource (Taco Street shortlist at /my-list), and explicitly ties it to the sibling search_apartments as its input source. An agent can distinguish this from search_apartments and get_apartment_details 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 Guidelines4/5

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

'Turn finalist apartments into...' clearly implies this is the post-search step, used once a renter has narrowed candidates, and tells the agent to pull names from search_apartments. It gives a clear usage context but states no exclusions, no limit/duplication caveats, and no explicit when-not-to-use guidance.

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

get_apartment_detailsGet apartment detailsA
Read-onlyIdempotent
Inspect

Full fact sheet for one building: floorplan-level pricing with as-of dates, move-in costs (admin/application/parking/pet fees), last-known specials (dated — treat as last-known, not current), amenities, walkability, virtual tour. Use the EXACT name from search_apartments. Compute totals yourself from components; a free human locator confirms live numbers.

NameRequiredDescriptionDefault
cityNoMetro, to disambiguate same-named buildings.
nameYesExact building name from search_apartments.

Output Schema

NameRequiredDescription
cityYes
nameYes
petsNo
addressNo
pricingYes
buildingNo
guidanceYes
specialsNo
neighborhoodNo
move_in_costsNo
lifestyle_tagsNo
taco_street_takeNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), but the description adds freshness semantics neither the annotations nor schema carry: specials are 'last-known (dated — treat as last-known, not current)' and totals must be computed by the caller. That staleness caveat is exactly the kind of beyond-structured-fields disclosure that prevents an agent from misreporting data as live.

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

Conciseness5/5

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

A single dense block with the payload front-loaded, then the input rule, then the computation/verification caveat. No filler sentences; every clause carries operational information.

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?

With an output schema present, return values need no explanation, and the description still supplies the data-freshness framing the schema omits. It is complete for a two-parameter read tool, only omitting any note on what happens when a building name is ambiguous or unmatched.

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?

Schema description coverage is 100%, so both parameters (name, city enum) are already documented in the schema, and the enum for city is self-explanatory. The description's 'EXACT name' instruction largely restates the schema's own 'Exact building name from search_apartments', so it adds little beyond the baseline.

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?

States a specific verb+resource ('Full fact sheet for one building') and enumerates the payload: floorplan pricing with as-of dates, move-in cost components, dated specials, amenities, walkability, virtual tour. It explicitly distinguishes itself from the sibling search_apartments by naming it as the source of the required name.

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

Usage Guidelines4/5

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

'Use the EXACT name from search_apartments' tells the agent both the prerequisite and which sibling produces the input. 'Compute totals yourself from components; a free human locator confirms live numbers' routes the agent away from expecting live pricing here and toward ask_a_locator for confirmation, though it never states a when-not-to-use case.

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

get_research_requestContinue apartment researchA
Read-onlyIdempotent
Inspect

Use the private request key to retrieve progress and, after Alexander approves, the reviewed report snapshot. No draft, contact details or internal notes are returned. Do not share the key or continuation link publicly.

NameRequiredDescriptionDefault
request_idYesID returned by request_apartment_research.
request_keyYesThe original private request key.

Output Schema

NameRequiredDescription
reportNo
statusYes
criteriaNo
guidanceYes
duplicateNo
apartmentsNo
request_idYes
continuation_urlNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds value by stating that no draft, contact details, or internal notes are returned, and includes a security instruction about not sharing the key publicly. This goes beyond the annotations and provides useful behavioral context.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The primary purpose is stated first, followed by exclusions and a security note. It is front-loaded and highly efficient.

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

Completeness5/5

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

Given the tool's simplicity (2 params, output schema present, annotations cover safety), the description provides all necessary context: what it does, when to use it, what it excludes, and a security warning. Nothing critical is missing for an agent to call it correctly.

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?

Schema description coverage is 100%, so both parameters (request_id and request_key) are fully described in the schema. The description only restates the purpose of the key ('private request key') without adding new semantic meaning. Baseline 3 is appropriate when the schema carries the parameter documentation.

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 clearly states the tool retrieves progress and, after approval, a reviewed report snapshot using a private key. It explicitly lists what is not returned, distinguishing it from other research-related tools. This is specific and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: use when you have a private request key and after Alexander approves. It implies the tool is for continuing an existing research request, but it does not explicitly contrast with sibling tools like request_apartment_research. The condition 'after Alexander approves' gives a usage hint, though no exclusions are mentioned.

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

request_apartment_researchRequest an apartment research reportA
Idempotent
Inspect

Submit a saved shortlist and renter brief to Taco Street with consent. Staff accepts the request before paid research starts; VAs verify gaps, then Alexander adds his judgment. Returns a private continuation link. No immediate report, guaranteed completion time, or tour booking. No email is sent by this tool.

NameRequiredDescriptionDefault
cityYesSupported search market for this shortlist.
agentNoSelf-reported referring assistant or product; not a verified partner identity.
notesNoRenter requirements and questions, not assistant-generated promises.
consentYesTrue only after the renter agrees to share this brief and contact for research and follow-up.
contactYesRenter's email or phone shared with consent for research follow-up.
move_inYesMove-in month YYYY-MM or exact date YYYY-MM-DD. Never invent a day; confirm the year.
bedroomsYesBedroom count, 0 for a studio, 1–4 otherwise.
budget_maxYesMonthly USD budget; specify its basis and flexibility separately.
client_nameYesRenter's name shared with consent.
request_keyYesGenerate a fresh cryptographically random URL-safe key (at least 32 random bytes, 43 encoded characters). Keep it private. Reuse it only to retry this identical request and retrieve its status; a different brief needs a new key.
budget_basisNobase_rent, total_monthly, or unknown when the renter has not specified.unknown
shortlist_tokenYesThe s parameter from the create_shortlist URL.
lease_term_monthsNoRequested lease length if known; omit when unknown.
budget_flexibilityNoDefaults to target. Use hard_max only for an explicitly strict ceiling.target
move_in_flexibilityNoWhether the move-in date is fixed or flexible.flexible

Output Schema

NameRequiredDescription
reportNo
statusYes
criteriaNo
guidanceYes
duplicateNo
apartmentsNo
request_idYes
continuation_urlNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare readOnly=false, destructive=false, idempotent=true, openWorld=false; the description adds genuinely new context: asynchronous human-in-the-loop flow (staff acceptance, VA gap verification, Alexander's judgment), no email being sent, no guaranteed completion time, and a private continuation link. It is consistent with the annotations and does not contradict them, though it does not discuss rate limits or permission/consent failure modes beyond mentioning consent.

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?

Four tight sentences, with the core action front-loaded and the workflow/return/exclusions following in a logical order. The trailing negative-sentence ('No immediate report, guaranteed completion time, or tour booking') is dense but earns its place; no filler.

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?

With an output schema present and full schema description coverage, the description need not explain return payloads, and it still flags the continuation link. Combined with the annotations, an agent has enough to call this 15-parameter tool correctly, though the explicit sibling routing and retry semantics remain implicit.

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?

Schema description coverage is 100% and 15 parameters are each documented in-schema (including the request_key idempotency rule and shortlist_token origin), so the schema carries the load. The description adds essentially no parameter-level detail beyond the 'with consent' framing, so the baseline 3 applies.

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 opening sentence states a specific verb and resource — 'Submit a saved shortlist and renter brief' — so the agent knows exactly what is being created. It also differentiates from the tour sibling by declaring 'No ... tour booking', and it names the concrete outcome ('private continuation link'). This is well beyond a restatement of the name/title.

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

Usage Guidelines3/5

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

The description implies when this applies (a paid-research request that requires staff acceptance, with no immediate report) and rules out tour booking, but it never explicitly says 'use request_research_tours instead for tours' or states prerequisites like needing a prior create_shortlist. Usage is inferable but not spelled out against the sibling set.

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

request_locator_helpRequest a free human locatorA
Idempotent
Inspect

Hand the renter to Alexander, Taco Street's human locator, who confirms live pricing/availability and books tours — free to renters (properties pay locators). Follow-up arrives by TEXT or EMAIL, never a cold call. Requires the renter's real phone or email, shared with their consent. One request per renter — duplicates within 24h return the existing lead.

NameRequiredDescriptionDefault
cityNoMetro the renter is searching (Austin, Dallas, Houston or San Antonio).
nameNoThe renter's name, if shared.
noteNoAnything the locator should know.
agentNoName of the referring assistant/product.
contactYesThe renter's phone number or email (with their consent).
move_inNoMove-in timeline, e.g. 'November'.
bedroomsNoBedroom count the renter needs, e.g. 1BR.
budget_maxNoThe renter's max monthly rent in USD.
neighborhoodsNoNeighborhoods the renter prefers.

Output Schema

NameRequiredDescription
lead_idYes
messageYes
successYes
duplicateNo

TDQS

A4.3/5.0
Behavior5/5

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

Annotations mark this as a non-read-only, idempotent, non-destructive, closed-world write; the description adds real context beyond that — it's free (properties pay locators), follow-up arrives by text/email rather than a cold call, and duplicate submissions within 24h return the existing lead, which directly explains the idempotentHint. Consent and real-contact requirements are also disclosed.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action and actor, then funding model, contact channel, and dedup rule. Every sentence carries information the agent needs; nothing is filler.

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

Completeness5/5

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

Output schema exists, so return-value detail isn't required, and the description still covers the one non-obvious return behavior (duplicate returns the existing lead). Consent requirements, cost, follow-up channel, and the actor are all addressed, leaving no gap for an agent deciding whether to call this.

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?

Schema coverage is 100% with per-field descriptions for all nine parameters, so the baseline is 3. The description reinforces the critical 'contact' requirement (real phone or email, with consent) but adds no format or syntax detail beyond what the schema already states.

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

Purpose4/5

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

The description names a concrete verb and resource — handing a renter to a named human locator who confirms live pricing/availability and books tours — so the agent knows exactly what the call accomplishes. It does not explicitly distinguish itself from the sibling ask_a_locator, which is the main thing keeping this from a 5.

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

Usage Guidelines4/5

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

It gives clear usage conditions: requires the renter's real phone/email shared with consent, one request per renter, and duplicates within 24h return the existing lead. What's missing is an explicit when-not or a named alternative (e.g. ask_a_locator) for cases where a request has already been made.

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

request_research_toursRequest tours from your reviewed researchA
Idempotent
Inspect

After report approval and explicit renter consent, request human tour coordination for selected apartments. Include preferred dates, times and timezone in preferred_times. Uses the existing private research key and contact. One handoff per research report; identical retries return the existing request, changed preferences require staff follow-up. No appointment is booked or message sent.

NameRequiredDescriptionDefault
consentYesTrue only after the renter explicitly agrees to tour coordination using their saved contact.
request_idYesID of the approved research request.
request_keyYesOriginal private research access key. Never share publicly.
apartment_namesYesExact apartment names from this report to discuss touring.
preferred_timesYesRenter-provided preferred dates, times and timezone; preferences are not confirmed appointments.

Output Schema

NameRequiredDescription
reportNo
statusYes
criteriaNo
guidanceYes
duplicateNo
apartmentsNo
request_idYes
continuation_urlNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare idempotentHint=true but the description adds concrete behavioral detail: 'identical retries return the existing request, changed preferences require staff follow-up.' It also clarifies side effects with 'No appointment is booked or message sent' and notes the private key/contact usage. This goes well beyond the structured 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 front-loaded with the purpose and precondition, then packs behavioral constraints into compact sentences. The line about preferred_times is mildly redundant with the schema, but every other sentence adds distinct value and the overall length is appropriate.

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

Completeness5/5

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

Given four required parameters, an output schema, and annotations, the description covers preconditions, idempotency, side effects, contact/key usage, and the handoff limit. Nothing an agent needs to avoid misinvocation is missing; the only omitted details are already covered by the output schema.

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?

Schema description coverage is 100%, so baseline is 3. The description's 'Include preferred dates, times and timezone in preferred_times' largely echoes the schema's parameter description. No additional semantic meaning is added beyond what the schema already documents.

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?

States a specific verb+resource: 'request human tour coordination for selected apartments.' Adds scoping conditions 'After report approval and explicit renter consent' and 'Uses the existing private research key and contact,' which clearly separates this from sibling request_apartment_research without needing the schema.

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

Usage Guidelines4/5

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

Provides clear context: 'After report approval and explicit renter consent' states when this tool is valid, and 'One handoff per research report' sets an important boundary. It does not explicitly name alternatives or exclusions, but the prerequisites are strong enough to guide selection.

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

search_apartmentsSearch apartmentsA
Read-onlyIdempotent
Inspect

Search Taco Street's curated apartment inventory in Austin, Dallas, Houston or San Antonio, TX. Returns scored matches with starting prices and a short 'why' per building. Use for long-term rentals only.

NameRequiredDescriptionDefault
cityYesMetro to search.
limitNoHow many scored matches to return (1-10).
queryNoWhat the renter wants, in plain language (e.g. 'walkable, dog-friendly, near downtown').
bedroomsNoBedroom count the renter needs.
budget_maxNoMax monthly rent in USD.
neighborhoodsNoPreferred neighborhoods, if the renter named any.

Output Schema

NameRequiredDescription
cityYes
noteNo
countYes
apartmentsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is fully covered structurally. The description adds a light behavioral detail (scored matches with starting prices and a 'why' per building) and the long-term-rental restriction, but nothing about pagination, ranking logic, or empty-result behavior.

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

Conciseness5/5

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

Two tight sentences, zero filler, with the scope (cities) front-loaded and the use restriction trailing as a qualifier. Every clause carries information.

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?

With an output schema present, the description needn't explain return shape, and it still summarizes what comes back. It covers scope, output flavor, and the rental-type restriction, but stops short of any guidance on when to escalate to detail or research siblings.

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?

Schema description coverage is 100%, with the city enum, limit bounds, and a plain-language query example all documented in the schema itself. The description adds no syntax or format guidance beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (Search) and resource (Taco Street's curated apartment inventory), and pins the scope to four named metros. It clearly reads as a discovery/search tool, though it never names a sibling like get_apartment_details to draw the boundary explicitly.

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

Usage Guidelines4/5

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

'Use for long-term rentals only' gives a real inclusion constraint, narrowing the tool to a rental use case. However, it does not name alternatives (e.g., get_apartment_details, request_apartment_research) or say when this tool is the wrong choice for a given intent.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedcreate_shortlist1 field changed
      • changedInput schema / properties / city / enum
        Previous value: -[
        -  "Austin",
        -  "Dallas",
        -  "Houston"
        -]New value: +[
        +  "Austin",
        +  "Dallas",
        +  "Houston",
        +  "San Antonio"
        +]
    • Changedget_apartment_details1 field changed
      • changedInput schema / properties / city / enum
        Previous value: -[
        -  "Austin",
        -  "Dallas",
        -  "Houston"
        -]New value: +[
        +  "Austin",
        +  "Dallas",
        +  "Houston",
        +  "San Antonio"
        +]
    • Changedrequest_locator_help1 field changed
      • changedInput schema / properties / city / description
        Previous value: -"Metro the renter is searching (Austin, Dallas or Houston)."New value: +"Metro the renter is searching (Austin, Dallas, Houston or San Antonio)."
    • Changedsearch_apartments1 field changed
      • changedInput schema / properties / city / enum
        Previous value: -[
        -  "Austin",
        -  "Dallas",
        -  "Houston"
        -]New value: +[
        +  "Austin",
        +  "Dallas",
        +  "Houston",
        +  "San Antonio"
        +]
  2. 1 tool update
    • Changedrequest_apartment_research3 fields changed
      • removedInput schema / properties / city / enum
        Removed value: -[
        -  "Austin",
        -  "Dallas",
        -  "Houston"
        -]
      • addedInput schema / properties / city / maxLength
        Added value: +40
      • addedInput schema / properties / city / minLength
        Added value: +1
  3. 2 tool updates
    • Changedask_a_locator4 fields changed
      • changedInput schema / properties / contact / description
        Previous value: -"The renter's phone/email — strongly recommended: the answer is texted/emailed to them directly, and polling alone can strand it."New value: +"The renter's phone/email, supplied with their consent. Strongly recommended; otherwise immediately share contact_capture_url returned by this tool."
      • addedOutput schema / properties / contact_capture_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / contact_status
        Added value: +{
        +  "enum": [
        +    "contactable",
        +    "anonymous"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "type": "string"
        +}
    • Changedcheck_answer2 fields changed
      • addedOutput schema / properties / contact_capture_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / contact_note
        Added value: +{
        +  "type": "string"
        +}
  4. 3 tool updates
    • Addedget_research_request
    • Addedrequest_apartment_research
    • Addedrequest_research_tours
  5. 6 tool updates
    • Changedask_a_locator3 fields changed
      • addedInput schema / properties / city / description
        Added value: +"Metro the question concerns."
      • addedInput schema / properties / question / description
        Added value: +"The question for the human locator — specifics beat generalities."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "guidance": {
        +      "type": "string"
        +    },
        +    "question_id": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "question_id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedcheck_answer2 fields changed
      • addedInput schema / properties / question_id / description
        Added value: +"The id returned by ask_a_locator."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "answer": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "answered_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "guidance": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "question": {
        +      "type": "string"
        +    },
        +    "question_id": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "enum": [
        +        "open",
        +        "answered"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "question_id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_shortlist3 fields changed
      • addedInput schema / properties / apartment_names / description
        Added value: +"Exact building names from search_apartments to save to the renter's list."
      • addedInput schema / properties / city / description
        Added value: +"Metro, to disambiguate same-named buildings."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "apartments": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "unmatched": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "url",
        +    "apartments"
        +  ],
        +  "type": "object"
        +}
    • Changedget_apartment_details2 fields changed
      • addedInput schema / properties / city / description
        Added value: +"Metro, to disambiguate same-named buildings."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "building": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "guidance": {
        +      "type": "string"
        +    },
        +    "lifestyle_tags": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "move_in_costs": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "neighborhood": {
        +      "type": "string"
        +    },
        +    "pets": {
        +      "type": "string"
        +    },
        +    "pricing": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "specials": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "taco_street_take": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "city",
        +    "pricing",
        +    "guidance"
        +  ],
        +  "type": "object"
        +}
    • Changedrequest_locator_help6 fields changed
      • addedInput schema / properties / bedrooms / description
        Added value: +"Bedroom count the renter needs, e.g. 1BR."
      • addedInput schema / properties / budget_max / description
        Added value: +"The renter's max monthly rent in USD."
      • addedInput schema / properties / city / description
        Added value: +"Metro the renter is searching (Austin, Dallas or Houston)."
      • addedInput schema / properties / name / description
        Added value: +"The renter's name, if shared."
      • addedInput schema / properties / neighborhoods / description
        Added value: +"Neighborhoods the renter prefers."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "duplicate": {
        +      "type": "boolean"
        +    },
        +    "lead_id": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "success",
        +    "lead_id",
        +    "message"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_apartments4 fields changed
      • addedInput schema / properties / bedrooms / description
        Added value: +"Bedroom count the renter needs."
      • addedInput schema / properties / limit / description
        Added value: +"How many scored matches to return (1-10)."
      • addedInput schema / properties / neighborhoods / description
        Added value: +"Preferred neighborhoods, if the renter named any."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "apartments": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "city": {
        +            "type": "string"
        +          },
        +          "estimated_price": {
        +            "type": [
        +              "string",
        +              "number"
        +            ]
        +          },
        +          "is_pet_friendly": {
        +            "type": "boolean"
        +          },
        +          "matchScore": {
        +            "type": "number"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "neighborhood": {
        +            "type": "string"
        +          },
        +          "pricing_as_of": {
        +            "type": "string"
        +          },
        +          "specials_last_known": {
        +            "type": "string"
        +          },
        +          "starting_prices": {
        +            "additionalProperties": {
        +              "type": "number"
        +            },
        +            "type": "object"
        +          },
        +          "website": {
        +            "type": "string"
        +          },
        +          "whyChosen": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "count": {
        +      "type": "integer"
        +    },
        +    "note": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "city",
        +    "count",
        +    "apartments"
        +  ],
        +  "type": "object"
        +}
  6. 1 tool update
    • Addedget_apartment_details
  7. 1 tool update
    • Changedask_a_locator1 field changed
      • changedInput schema / properties / contact / description
        Previous value: -"Optional: the renter's phone/email so the answer reaches them directly too."New value: +"The renter's phone/email — strongly recommended: the answer is texted/emailed to them directly, and polling alone can strand it."
  8. 5 tool updates
    • First observedask_a_locator
    • First observedcheck_answer
    • First observedcreate_shortlist
    • First observedrequest_locator_help
    • First observedsearch_apartments

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search, compare, and interact with Apartments.com rental listings, including scheduling tours and contacting property managers.
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching active NYC rental apartments and lease takeovers with filters for price, bedrooms, commute, amenities, and more, plus creating links to set up alerts for new matches.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides US real estate data including housing stats, demographics, nearby amenities, area comparisons, cost-of-living analysis, and neighborhood search via free public APIs without any API keys.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides free property and parcel intelligence using official US government data APIs, county assessor records, and live listings, with tools for hazard risk checks, affordability calculations, and parcel ranking.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources