listing
Server Details
List on MLS, sell, show, compare and close your real estate property on beycome.
- Status
- Healthy
- Uptime
- 99.7% over 78 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 14 tools
Each tool targets a distinct resource and action, and the descriptions explicitly resolve the trickiest overlaps (beycome_estimate vs beycome_rental_estimate, signin_start vs signin_verify vs signup, messages vs reply_message). Read vs write, discovery vs post-publish, and account stages are all clearly delineated. An agent would rarely misselect here.
All tools share a consistent beycome_ prefix and snake_case convention, and most follow a verb_noun pattern (check_coverage, get_my_listings, reply_message, submit_property_link). A few are bare nouns (comps, messages, offers, showings), which is a minor deviation but still readable and predictable given the domain.
14 tools is well-scoped for a multi-stage listing lifecycle spanning discovery, account auth, listing creation, questionnaire, and post-publish management. Each tool has a clear, earned role with no redundant entries.
Coverage is broad: discovery (coverage, comps, sale/rental estimates), account (signup/signin), listing creation, questionnaire, and post-publish reads (messages, showings, offers) plus message reply. However, responding to offers (accept/reject/counter) is explicitly unexposed and there is no listing update/delete, leaving notable lifecycle gaps.
Available Tools
14 toolsbeycome_check_coverageCheck beycome MLS coverageARead-onlyInspect
Discovery stage — is this state served by beycome MLS? (GET /mls/is-covered).
No account or prop_id needed. Use before listing to confirm beycome operates
in the property's state; is_active: true means covered. If not covered,
the listing flow does not apply.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | State short code (e.g. FL) or full name (e.g. Florida). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is known. The description adds genuinely useful context beyond them: no account or prop_id is required (auth-free), and it discloses the semantic of the response field ('is_active: true means covered'). It stops short of noting latency/caching or what a false/error response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly three short sentences, front-loaded with the discovery-stage framing and endpoint, with zero filler. Every sentence (identity, prerequisites, usage gate) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only coverage check with an output schema present, the description supplies everything the agent needs: purpose, prerequisites, usage gate, and the interpretation of the key response field. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'state' parameter is fully documented (short code or full name) in the schema. The description only reinforces that no account or prop_id is needed rather than adding new parameter semantics, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('is this state served by beycome MLS?') and even names the underlying endpoint (GET /mls/is-covered). It is clearly distinct from the sibling tools (comps, estimate, listings, messages), so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the workflow position ('Use before listing to confirm beycome operates in the property's state') and states the negative case ('If not covered, the listing flow does not apply'). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_compsFind sold comparable listingsARead-onlyInspect
Discovery stage — sold comparable listings near a location (GET /comps).
No account or prop_id needed. Supports price / beds / baths / area / lot /
type filters. Use during discovery to support pricing alongside
beycome_estimate.
Slow endpoint: a cold query can take up to ~1 minute to respond — this is normal, you can always retry the call if it times out. Photo URL and listing-link fields are stripped from the records to keep the response small.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of result pages to fetch. | |
| beds_max | No | Maximum beds. | |
| beds_min | No | Minimum beds. | |
| location | Yes | Location string (city, state, ZIP, etc.). | |
| baths_max | No | Maximum baths. | |
| baths_min | No | Minimum baths. | |
| price_max | No | Maximum price. | |
| price_min | No | Minimum price. | |
| lot_size_max | No | Maximum lot size sqft. | |
| lot_size_min | No | Minimum lot size sqft. | |
| property_type | No | Comma-separated types (singlefamily, condo, townhouse, multifamily, manufactured, land, apartment). | |
| living_area_max | No | Maximum living area sqft. | |
| living_area_min | No | Minimum living area sqft. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint. The description adds genuinely non-obvious behavior: the endpoint can take ~1 minute on a cold query, timeouts are safe to retry, no account or prop_id is required, and photo/listing-link fields are stripped to shrink the response. This is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by filters, usage routing, and behavioral caveats in short scannable lines. The retry advice is slightly conversational but each sentence conveys actionable information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return shape needn't be explained, and the description still notes which fields are stripped. For a 13-param read-only discovery tool it covers purpose, routing, latency, and auth prerequisites without gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 13 parameters are already documented, including the property_type enum values. The description only summarizes filter categories (price/beds/baths/area/lot/type), which mirrors the schema rather than adding meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource — sold comparable listings near a location — and even names the underlying endpoint (GET /comps). It distinguishes itself from siblings by naming beycome_estimate as the companion tool, so an agent can place it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use during discovery to support pricing alongside `beycome_estimate`" gives clear context and names a related tool. It does not state when to prefer one over the other (exclusions), 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.
beycome_estimateEstimate property sale valueARead-onlyInspect
Discovery stage — estimate a property's SALE value (beycome CMA + Zillow Zestimate).
No account or prop_id needed. Returns both estimates plus suggested pricing
strategies (fast / balanced / max). Use during discovery to set a list price;
pair with beycome_comps. For rental inquiries, use beycome_rental_estimate instead.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Optional unit number (for example 101). Prefer embedding the unit in the address string as 'Apt 101' instead of using this field. | |
| address | Yes | Full property address in the form 'Street, City, ST ZIP' (e.g. '6104 Timberly Rd S, Mobile, AL 36609'). ZIP is required for reliable results. Include any unit inside the address with a spelled-out designator, e.g. 'Apt 107' or 'Unit 107' — never '#107'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuine non-obvious context: 'No account or prop_id needed' clarifies the auth/session requirement, and it names the pricing strategies returned (fast / balanced / max). It stops short of detailing latency, coverage limits, or failure modes for an open-world address lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight paragraphs, front-loaded with the discovery-stage positioning, then the return contents, then routing. Every sentence carries distinct information with no repetition of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only two-parameter estimation tool with an output schema and safety annotations, the description covers stage, inputs needed, return shape, and sibling routing. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already spells out the address format, ZIP requirement, and the unit-vs-embedded-unit preference in more detail than the description does. The description adds no parameter-level meaning beyond the incidental 'no prop_id needed' note, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — estimate a property's SALE value — and names the two underlying sources (beycome CMA + Zillow Zestimate). It explicitly contrasts with the sibling rental tool and the comps tool, so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('Use during discovery to set a list price'), a pairing recommendation ('pair with beycome_comps'), and a named alternative for the adjacent case ('For rental inquiries, use beycome_rental_estimate instead'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_get_my_listingsGet my listingsARead-onlyInspect
Recovery stage — the signed-in user's properties (GET /properties).
Token-scoped RESO list endpoint on the normal api base. Two main uses:
After the user finishes the submit-property page (
beycome_submit_property_link): find the newly created listing (typically the newest entry), CONFIRM the address with the user, then use its id asprop_idforbeycome_questionnaire_link.As the entry point for a returning user who already has listings (or references "my listing" without an id): locate the listing and read its status to pick the next step — paid but questionnaire pending →
beycome_questionnaire_link; already live → the post-publish tools (beycome_messages,beycome_showings,beycome_offers).
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | Yes | Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real operational context beyond that: it is token-scoped, a RESO list endpoint on the normal api base, and the newly created listing is 'typically the newest entry'. It stops short of pagination or rate-limit detail, but with annotations carrying the safety burden a 4 is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the stage and endpoint, then uses two tight bullets for the main uses. The workflow routing detail earns its place, though the markdown-heavy formatting and stage framing are slightly more verbose than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not be explained, and the description fully covers endpoint, auth scoping, and routing to sibling tools. Nothing an agent needs to call and place this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single access_token parameter fully documented in the schema, so the baseline is 3. The description's 'token-scoped' note aligns with but does not extend the schema's own token description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('the signed-in user's properties (GET /properties)') and immediately distinguishes itself from siblings by naming the exact downstream tools it feeds (beycome_questionnaire_link, beycome_messages, beycome_showings, beycome_offers). An agent can tell what this does and where it sits in the workflow without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates two use cases: post-submit-property recovery and as the entry point for a returning user referencing 'my listing' without an id. It even maps resulting status to the correct next tool, giving concrete when-to-use and branching logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_messagesRead buyer/inquiry messagesARead-onlyInspect
Post-publish stage — read the owner's buyer/inquiry messages (GET /messages).
Read-only. Requires access_token. Two modes:
Omit
thread→ lists the ~20 most recent conversations, newest first, one row per thread (the latest message in each). Useful fields per row:address,prop_id,prop_status,msg(latest text),subject,requested_by/email(the other party),thread,read_msg("0" = unread),attachments, andmessage_type(senderif the owner wrote the latest message, elsereceiver).Pass
thread→ returns that one conversation in full, oldest-first. Use thethreadvalue from a list row to drill in.
The list is not paginated here on purpose (the upstream page param is
overloaded — it sets both page size and page number — so it is not exposed).
Soft-deleted messages are dropped after paging, so a page may hold fewer than
20 rows; that is not an error. The payload is a bare array under data.
A 401 means the token is no longer valid (logged out, or very old) —
re-authenticate with beycome_signin_start then beycome_signin_verify.
To answer a
message, use beycome_reply_message.
| Name | Required | Description | Default |
|---|---|---|---|
| thread | No | Thread id to open one full conversation (the ``thread`` value from a list row). Omit to list the user's recent conversations. | |
| access_token | Yes | Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint/openWorldHint, and the description adds real operational context: 401 means an invalid/expired token, the list is deliberately unpaginated because upstream ``page`` is overloaded, soft-deleted rows shrink a page without being an error, and the payload is a bare array under ``data``. That is well beyond the annotations, though it stops short of describing ordering guarantees or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the stage and method, then splits the two modes into clearly labeled bullets, followed by quirks and error handling. Despite its length, nearly every sentence carries a distinct operational fact (unread flag, message_type semantics, soft-delete behavior, payload shape).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with an output schema, the description covers the remaining gaps an agent needs: mode selection, row fields, unread semantics, the pagination quirk, error handling, and the next tool to call. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented; baseline is 3. The description still adds meaning: it explains that ``thread`` should come from a list row to open one conversation, and that the upstream page parameter is intentionally withheld. It adds workflow context the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (the owner's buyer/inquiry messages) and pins the lifecycle stage (post-publish) plus the underlying GET /messages. The two-mode structure (list vs. single thread) is spelled out, so an agent can distinguish it from siblings like beycome_reply_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to omit ``thread`` (list ~20 recent conversations) versus when to pass it (drill into one full conversation using a thread value from a list row). It also routes the agent elsewhere for the follow-up action ('To answer a message, use beycome_reply_message') and names the re-auth path for 401s.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_offersView offers receivedARead-onlyInspect
Post-publish stage — offers received on the owner's listings (GET /offers).
Used once a listing is live. Requires access_token. Returns a paginated
list (20 per page; pass page to advance) of every offer across all of the
signed-in user's listings — each entry is the full offer record (buyer,
price, contingencies, dates, status). Read-only.
There is no server-side prop_id filter; to show offers for one listing,
filter client-side on each offer's prop_id. Responding to an offer
(accept / reject / counter) is not exposed here.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number of the paginated offers list (defaults to page 1). | |
| access_token | Yes | Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint and openWorldHint; the description adds meaningful behavior beyond them: an access_token is required, results are paginated at 20 per page, each entry is a full offer record with listed fields, and there is no server-side prop_id filter. The 'Read-only.' sentence is the one part that restates the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded with the lifecycle stage, then auth, return shape, and constraints; nearly every sentence earns its place. The standalone 'Read-only.' sentence is redundant with readOnlyHint rather than additive, a minor structural waste in an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only list tool with an output schema present, the description covers everything an agent needs: lifecycle timing, auth source, pagination mechanics, per-entry fields, and a filtering limitation plus the client-side workaround. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning by disclosing the page size (20 per page) and the need to pass page to advance, which the schema's 'Page number of the paginated offers list' does not convey. It does not add anything beyond the schema for access_token.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('offers received on the owner's listings') and even pins the underlying endpoint (GET /offers). It distinguishes itself from siblings like beycome_get_my_listings by scoping to received offers, and from the messaging/response tools by stating that accept/reject/counter is not here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the lifecycle trigger ('used once a listing is live'), gives the operational workaround for single-listing views (no server-side prop_id filter, filter client-side on each offer's prop_id), and explicitly excludes an adjacent capability (responding to offers). When-to-use, how-to-adapt, and when-not are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_questionnaire_linkGet MLS questionnaire linkAInspect
Questionnaire stage — mint a pre-authorized link to the MLS questionnaire form (POST /api/mls/questionnaire-link).
Requires a PAID listing (premium active, Flat/Yes) — whether the user just
paid on the submit-property page (beycome_submit_property_link) or
already had a paid listing with the questionnaire still pending. Returns a pre-authorized link (expires in 7 days) — this tool
only hands back the URL; everything else happens in the browser, with no
login step. Present the URL and tell the user that on the page they will:
review the pre-filled MLS questionnaire and complete any fields Beycome couldn't pre-fill,
upload property photos and the required documents,
review and submit. After they submit, the listing goes live within about 48 hours, provided all the paperwork clears.
Failure modes to relay plainly: 403 — the token is not the owner's; 422 — the listing is not paid yet, or the questionnaire was already submitted; 401 — bad/missing token.
| Name | Required | Description | Default |
|---|---|---|---|
| prop_id | Yes | Property id in beycome. | |
| access_token | Yes | Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, openWorld=true, destructive=false. The description adds substantial extra context beyond that: the 7-day link expiry, that the tool only returns a URL with no login step, the browser-side workflow, the ~48h listing timeline, and explicit 401/403/422 failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded (purpose and prerequisite first) and the numbered steps and failure-mode list make it scannable. It is somewhat long, but nearly every sentence adds operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not be explained, and the description fully covers prerequisites, next steps, timing, and error handling. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 prop_id and access_token, and the description adds no parameter-level detail. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('mint a pre-authorized link to the MLS questionnaire form') and even names the endpoint. It is clearly distinguishable from siblings like beycome_submit_property_link, which it explicitly references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite ('Requires a PAID listing (premium active, Flat/Yes)'), covers both triggering scenarios (just paid vs. already-paid with questionnaire pending), and routes to the related sibling beycome_submit_property_link. An agent knows exactly when this applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_rental_estimateEstimate monthly rentARead-onlyInspect
Discovery stage — estimate a property's monthly RENT (POST /gemini-estimate).
No account or prop_id needed. Pairs with beycome_estimate, but this tool
is SPECIFICALLY for rental estimates: use it ONLY for rental inquiries or
for properties that have a unit number. For sale-price estimates, use
beycome_estimate.
Returns rentEstimate (e.g. "$2,600"), rentEstimateRange (e.g.
"$2,400 - $2,800"), and the sources the figure was grounded on (source
URLs are stripped to keep the response small).
Caveat: an unrecognized address still returns success: true with a
generic market-average rent — check that the source titles actually
reference the property's address/city before trusting the number; if they
don't, treat the result as unavailable and ask the user to verify the
address.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Optional unit number (for example 304). | |
| address | Yes | Full property address in the form 'Street, City, ST ZIP' (e.g. '501 SW 1st St, Miami, FL 33130'). ZIP is required for reliable results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only and open-world, but the description adds substantial context beyond them: no account or prop_id required, the exact endpoint, the returned fields, and a crucial caveat that unrecognized addresses still return success:true with a generic market rent and how to detect it. This is genuinely valuable behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the discovery-stage purpose, then routes to siblings, then explains returns, then the caveat. Each sentence earns its place and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 returns, yet it does so helpfully, and it supplies the critical reliability caveat. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaning by clarifying that a unit number signals a rental inquiry and that no prop_id is required. The address formatting detail is fully carried by the schema, so it stays just above baseline rather than at 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('estimate a property's monthly RENT') and explicitly contrasts with the sibling 'beycome_estimate', which handles sale-price estimates. An agent can distinguish this tool from its closest sibling purely from the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('ONLY for rental inquiries or for properties that have a unit number') and when-not, naming the alternative ('For sale-price estimates, use beycome_estimate'). Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_reply_messageReply to a buyer/inquiry messageAInspect
Post-publish stage — reply to a buyer/inquiry message (POST /messages/reply).
Sends a real message and queues a real email notification to the recipient, so the text you send is final — treat this as a live send, not a draft.
ALWAYS improve the user's drafted reply before sending: fix grammar, spelling, punctuation, capitalization, and formatting, and tighten wording for a clear, professional tone — while preserving their meaning and intent. Send the corrected version, never the raw draft. When the user says "reply saying X", treat X as a rough draft to polish, not literal text to send verbatim.
Requires to_user_id (the counterparty), message, and access_token.
For a threaded reply pass the original thread verbatim and omit
subject (the server prefixes "Re: "). To find
to_user_id, open the conversation with beycome_messages and take the
participant id that is not the signed-in owner.
Success is 201 with data.id set to the new message id. Failures come back
as 400 with a plain message: "User not found." (bad to_user_id), "You
cannot send a message to yourself." (to_user_id is the sender), or
"Invalid parameters" (e.g. empty/over-long message). A 401 means the
token is no longer valid — re-authenticate with beycome_signin_start then
beycome_signin_verify.
| Name | Required | Description | Default |
|---|---|---|---|
| thread | No | Thread id from the original conversation (a `beycome_messages` row's ``thread``). Pass it verbatim to keep the reply stitched to the thread. | |
| message | Yes | The reply text to send (max 5000 chars). | |
| subject | No | Optional subject (max 255). Omit on a thread reply — the server derives "Re: <original subject>". | |
| to_user_id | Yes | Recipient's beycome user id — the counterparty in the thread (the ``fromuser``/``touser`` from a `beycome_messages` row that is NOT the signed-in owner). Cannot be the sender's own id. | |
| access_token | Yes | Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, openWorld=true, destructive=false. The description goes well beyond them: it warns this is a live send with a real email notification queued, that sent text is final, and it enumerates concrete failure modes and their 400 messages plus the 401 re-auth path via `beycome_signin_start`/`beycome_signin_verify`.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb/resource and endpoint, then organized into clear blocks (behavior, instructions, parameters, outcomes). It is longer than strictly necessary — the draft-polishing paragraph runs several sentences — but nearly every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema present, the definition covers everything an agent needs: required params, recipient resolution, threading rules, success status (201 with data.id), and the error branches. Nothing material is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description still adds real meaning: how to derive `to_user_id` (the counterparty, not the signed-in owner), why `subject` should be omitted on a thread reply (server prepends "Re: <original subject>"), and what a thread id is sourced from. This is meaning beyond literal field definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("reply to a buyer/inquiry message") plus the stage ("Post-publish stage") and the underlying endpoint (POST /messages/reply). It is clearly distinguished from the read-oriented sibling `beycome_messages`, which it explicitly names as the lookup tool for the recipient id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance (replying post-publish), the prerequisite lookup path (open the conversation in `beycome_messages` and take the non-owner participant id), and the threaded-vs-new split ("For a threaded reply pass the original thread verbatim and omit subject"). It also sets a behavioral policy: always polish the user's draft, never send it verbatim.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_showingsView showings calendarARead-onlyInspect
Post-publish stage — calendar of showings, open houses, and offer deadlines (GET /calendar/events).
Used once a listing is live. The API requires the date range, so it defaults
to today → +90 days when omitted (from_date / to_date are
YYYY-MM-DD, with to_date on or after from_date). prop_id
filters to one listing; omit it for every listing the user owns.
The response always mixes ALL event kinds — each event carries a type
field (showing / open_house / offer). There is no server-side
type filter; when the user asks for one kind, filter on that field yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| prop_id | No | Optional — filter events to one property id; omit for all listings. | |
| to_date | No | End of the calendar range (YYYY-MM-DD). Defaults to 90 days from today. | |
| from_date | No | Start of the calendar range (YYYY-MM-DD). Defaults to today. | |
| access_token | Yes | Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses non-obvious behavior: the date range defaults to today → +90 days when omitted, and the response always mixes all event kinds with no server-side type filter, forcing the agent to filter client-side. That last point is exactly the kind of trait annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then usage stage, then parameter behavior, then the response caveat. Every sentence adds information an agent needs; nothing is redundant padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not be explained, yet the description still supplies the critical structural fact (the type field and its values) plus default/filter behavior. Nothing needed to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100% (formats and defaults are documented there), so the baseline is 3. The description goes further by adding the ordering constraint that to_date must be on or after from_date, which is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination — a calendar of showings, open houses, and offer deadlines — and even names the lifecycle stage ('post-publish'). An agent can distinguish this from sibling beycome_offers because the calendar explicitly mixes event kinds rather than being an offers list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Used once a listing is live' gives clear context for when this tool applies. It does not, however, name an alternative tool or an explicit when-not condition, so it falls short of the routing guidance a 5 requires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_signin_startSend one-time sign-in codeAInspect
Account stage — send a one-time sign-in code (POST /auth/check-email).
beycome is passwordless — never ask the user for a password. This emails the
user a 6-digit code (a second, different code also goes out by SMS; either
one works). Ask the user for the code they received, then exchange it for
the access_token with beycome_signin_verify.
Read the response body, not the HTTP status — the envelope's ok mirrors
the HTTP status, and auth failures here still return 2xx. Always check
data.success:
success: true(201, "Email sent") — code sent; ask the user for it.success: falsewith "Email not found." (HTTP 200,ok: true) — no account for this email; runbeycome_signupinstead (signup also sends a code).HTTP 422 (
ok: false) — the email matched a secondary address; the body still matters: it hints the masked primary login email to use instead.
Codes stay valid for 30 minutes. Re-running this tool sends a fresh code and invalidates the old one. Rate-limited (5/min and 100/day per email) — never call it in a loop or as an automatic retry.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | User email address. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true). It discloses that codes are dual-channel (email + SMS), valid 30 minutes, that re-running invalidates the previous code, explicit rate limits (5/min, 100/day), and the non-obvious fact that auth failures still return 2xx so the body envelope must be read instead of the status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation, then structured into response-case bullets and constraints. It is long, but nearly every sentence carries distinct operational value (error branches, rate limits, code lifetime), so only minor trimming is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description supplies the response-interpretation rules the schema cannot convey (ok mirrors HTTP status, check data.success, 422 masked-primary hint). For a passwordless auth entry point with tricky 2xx-on-failure behavior, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'email' parameter, so the schema already documents it and the baseline of 3 applies. The description adds workflow context around the email (what happens if no account matches, or if it hits a secondary address) but no new syntax or format meaning for the parameter itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('send a one-time sign-in code') and immediately anchors it in the auth flow ('Account stage'), naming the sibling it pairs with (beycome_signin_verify) and the fallback (beycome_signup). An agent can distinguish it from every other sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: run beycome_signup when 'Email not found.', exchange the code via beycome_signin_verify, and a hard 'never call it in a loop or as an automatic retry' exclusion. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_signin_verifyVerify sign-in codeAInspect
Account stage — exchange the one-time code for the access_token (POST /auth/validate-code).
The gateway to the listing flow. Call after beycome_signin_start or
beycome_signup (both send the code) with the 6-digit code the user
received. On success the Bearer token is at data.data.access_token
(expires_in gives its lifetime in seconds — tokens are long-lived, so
mid-session expiry is rare). Pass it as access_token to every
authenticated tool: beycome_submit_property_link, beycome_get_my_listings,
beycome_questionnaire_link, beycome_offers, beycome_showings,
beycome_messages, and beycome_reply_message.
IMPORTANT — persist the token: save the access_token to your long-term
memory/context (and tell the user you have done so). Save it together
with the account email, which disambiguates multi-account users and
lets you match the right token to the right person. In future sessions,
scheduled tasks, and crons, reuse the saved token instead of asking the
user to sign in again — that is what makes autonomous workflows (e.g.
"check my messages every morning") possible. Before signing a user in,
check your memory for an existing token for that email and try it
first; only restart the sign-in flow on a 401.
The next step depends on where the user is:
No listing yet →
beycome_submit_property_linkto create one.Has a listing already (or unsure) →
beycome_get_my_listingsto find it; if it is paid but the MLS questionnaire is not submitted, follow withbeycome_questionnaire_link.Listing already live → skip straight to the post-publish tools (
beycome_messages,beycome_showings,beycome_offers).
A wrong or expired code returns HTTP 200 with success: false and
"Invalid code." — check data.success, not the envelope's ok. Codes
expire after 30 minutes; if expired, request a fresh one with
beycome_signin_start (don't retry blindly — sends are rate-limited).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 6-digit one-time code the user received by email or SMS. | |
| Yes | User email address. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, destructiveHint=false. The description adds substantial non-structured context: the token's location (data.data.access_token), its lifetime via expires_in, the 30-minute code expiry, rate-limited sends, and the critical error-semantics gotcha (HTTP 200 with success:false on invalid codes — check data.success, not the envelope's ok).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is long, but front-loaded with the core purpose and token location, then organized into clearly labeled blocks (IMPORTANT/persistence, next-step branching, error handling). Every section carries actionable information; only minor overlap between the persistence paragraph and the next-step list keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an authentication tool with an output schema present, the description goes beyond what is required: it explains the token path, persistence expectations across sessions/crons, and failure semantics. An agent has everything needed to call it correctly and handle both success and failure paths.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (code, email), so the schema already carries the parameter documentation and 3 is the baseline. The description adds only marginal parameter-adjacent detail (6-digit, one-time, 30-minute expiry), which is contextual rather than filling a schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('exchange the one-time code for the access_token') and even names the endpoint POST /auth/validate-code. It explicitly positions itself as the 'gateway to the listing flow' and distinguishes itself from the two siblings that send codes, beycome_signin_start and beycome_signup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (after beycome_signin_start or beycome_signup, with the 6-digit code), when-not (don't retry blindly on rate-limited sends; check memory for an existing token and only restart sign-in on a 401), and routes the agent to specific next-step siblings depending on account state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_signupSign up for beycomeAInspect
Account stage — register a new beycome user (POST /auth/register).
Use when the owner has no account yet. beycome is passwordless: registering
automatically emails the user a 6-digit sign-in code, so the next step is
beycome_signin_verify with that code — do NOT call beycome_signin_start
after signup, the code is already on its way. If the email is already
registered, this still just sends a sign-in code (signup doubles as
signin-start). Requires firstname and phone; validation errors come
back as HTTP 400 with an errors array. No prop_id needed.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | User email address. | ||
| phone | Yes | User phone number. | |
| is_owner | No | 1 if the user is a landlord/owner, 0 otherwise. | |
| lastname | No | User last name. | |
| firstname | Yes | User first name. | |
| company_name | No | Company name. | |
| sms_unsubscribe | No | SMS opt-in flag: 0 = opt-in, 1 = opt-out. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the passwordless model, that registering auto-emails a 6-digit code, that signup doubles as signin-start, the HTTP 400 + errors-array failure format, and that no prop_id is needed. These are behaviors an agent cannot infer from readOnlyHint/openWorldHint alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The stage label and endpoint are front-loaded and every sentence carries routing or behavioral information. It is slightly dense with parenthetical asides, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not be explained. The description supplies the account-flow context, follow-up tool, error handling, and required inputs, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 seven properties. The description only reinforces that firstname and phone are required and that prop_id is unnecessary; it adds little on is_owner, sms_unsubscribe, or the optional fields. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("register a new beycome user") and even cites the endpoint (POST /auth/register), plus a lifecycle stage ("Account stage"). It is clearly distinguishable from the signin siblings it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger ("Use when the owner has no account yet"), the next step (beycome_signin_verify with the emailed code), an explicit exclusion ("do NOT call beycome_signin_start after signup"), and edge-case behavior (already-registered still sends a code). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beycome_submit_property_linkGet create-listing linkAInspect
Listing-creation stage — mint a pre-authorized link to the submit-property page (POST /api/mls/submit-property-link).
Call AFTER signing in (beycome_signin_verify). User-scoped — no prop_id
exists yet. Returns a
pre-authorized link (expires in 7 days) — this tool only hands back the URL;
the listing is created in the browser, with no login step. Present the URL
and tell the user that on the page they will:
fill out their property's information,
set a price,
choose a package and any add-ons,
pay. Tell them to return to the chat once payment is complete.
Prefill: the page accepts prefill params baked into the signed URL.
list_address: the full property address. By this stage the user has already told Claude their address (discovery ran on it), so ALWAYS pass list_address so the page opens pre-filled.
package: the page PRESET INDEX (1-4), not a payment reference — 1 = Basic $99 2 = Enhanced $399 3 = Concierge $999 4 = Basic + Title $199 WARNING: this is the page preset index, NOT an internal payPremiumOpt reference number. Passing a payPremiumOpt reference here is wrong. Only pass package if the user has clearly chosen a tier in chat; otherwise omit it and let them pick on the page.
Failure modes to relay plainly: 401 — bad/unverified token.
This page is THE way to create a listing — the property is created, priced,
and paid for there; there is no in-chat alternative. After the user returns,
call beycome_get_my_listings to recover the new prop_id, then
beycome_questionnaire_link.
| Name | Required | Description | Default |
|---|---|---|---|
| package | No | Page preset index 1-4: 1=Basic $99, 2=Enhanced $399, 3=Concierge $999, 4=Basic+Title $199. NOT a payPremiumOpt reference. | |
| access_token | Yes | Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user. | |
| list_address | No | Full property address to prefill the page (the address discussed in chat). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and openWorldHint=true but say nothing about lifespan or side effects; the description supplies the 7-day expiry, the fact that the actual listing creation happens in the browser with no login step, and the 401 failure mode. That is meaningful behavioral context beyond the structured hints, and it does not conflict with them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the stage and purpose, then organized into numbered user steps, prefill rules, failure modes, and follow-ups — easy to scan. It is on the long side and the package index mapping is repeated verbatim from the schema, which is the only notable redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 no prose, and the description covers everything else an agent needs: auth prerequisite, user-scoping, expiry, conditional parameter use, failure handling, and the exact next calls to make. Nothing required to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds real value on top: it tells the agent when to include vs omit package, and warns that the value is a page preset index rather than a payPremiumOpt reference — a distinction that is easy to get wrong. It also reinforces list_address as the address already discussed in chat.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact — 'mint a pre-authorized link to the submit-property page' — plus the concrete endpoint POST /api/mls/submit-property-link. It explicitly positions itself against siblings by naming beycome_signin_verify as a prerequisite and beycome_get_my_listings / beycome_questionnaire_link as the follow-ups, and clarifies that this tool only returns a URL rather than creating the listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit ordering ('Call AFTER signing in'), explicit conditional parameter rules ('ALWAYS pass list_address', 'Only pass package if the user has clearly chosen a tier in chat; otherwise omit it'), a stated failure mode (401 — bad/unverified token), and a named post-return sequence. The description also states there is no in-chat alternative, which forecloses the agent looking for another tool.
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 tool update
- Added
beycome_rental_estimate
1 tool update
- Removed
beycome_sell_timing
1 tool update
- Changed
beycome_estimate2 fields changed- changed
Input schema / properties / address / descriptionPrevious value: -"Full property address (street, city, state, zip when available)."New value: +"Full property address in the form 'Street, City, ST ZIP' (e.g. '6104 Timberly Rd S, Mobile, AL 36609'). ZIP is required for reliable results. Include any unit inside the address with a spelled-out designator, e.g. 'Apt 107' or 'Unit 107' — never '#107'." - changed
Input schema / properties / unit / descriptionPrevious value: -"Optional unit number (for example 101 or #101)."New value: +"Optional unit number (for example 101). Prefer embedding the unit in the address string as 'Apt 101' instead of using this field."
7 tool updates
- Changed
beycome_get_my_listings1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin_verify."New value: +"Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user."
- Changed
beycome_messages1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin_verify."New value: +"Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user."
- Changed
beycome_offers1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin_verify."New value: +"Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user."
- Changed
beycome_questionnaire_link1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin_verify."New value: +"Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user."
- Changed
beycome_reply_message1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin_verify."New value: +"Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user."
- Changed
beycome_showings1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin_verify."New value: +"Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user."
- Changed
beycome_submit_property_link1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin_verify."New value: +"Bearer access token from beycome_signin_verify, or a previously saved token from your memory for this user."
10 tool updates
- Removed
beycome_create_property - Removed
beycome_disclosures - Changed
beycome_get_my_listings1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Removed
beycome_list - Removed
beycome_mls_questionnaire - Added
beycome_offers - Removed
beycome_publish - Changed
beycome_questionnaire_link1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Changed
beycome_showings4 fields changed- changed
Input schema / properties / from_date / descriptionPrevious value: -"Start date for the calendar range (YYYY-MM-DD)."New value: +"Start of the calendar range (YYYY-MM-DD). Defaults to today." - changed
Input schema / properties / prop_id / descriptionPrevious value: -"Filter events by property id."New value: +"Optional — filter events to one property id; omit for all listings." - changed
Input schema / properties / to_date / descriptionPrevious value: -"End date for the calendar range (YYYY-MM-DD)."New value: +"End of the calendar range (YYYY-MM-DD). Defaults to 90 days from today." - removed
Input schema / properties / typeRemoved value: -{ - "anyOf": [ - { - "enum": [ - "showing", - "open_house", - "offer" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filter by event type." -}
- Changed
beycome_submit_property_link1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
3 tool updates
- Added
beycome_get_my_listings - Added
beycome_questionnaire_link - Added
beycome_submit_property_link
11 tool updates
- Changed
beycome_create_property1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Changed
beycome_disclosures1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Changed
beycome_list1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Added
beycome_messages - Changed
beycome_mls_questionnaire1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Changed
beycome_publish1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Added
beycome_reply_message - Changed
beycome_showings1 field changed- changed
Input schema / properties / access_token / descriptionPrevious value: -"Bearer access token from beycome_signin."New value: +"Bearer access token from beycome_signin_verify."
- Removed
beycome_signin - Added
beycome_signin_start - Added
beycome_signin_verify
2 tool updates
- Added
beycome_create_property - Changed
beycome_list1 field changed- changed
Input schema / properties / pay_premium_opt / descriptionPrevious value: -"Premium option string (e.g. '2|233|30')."New value: +"Premium option string (e.g. '2|233|30'); see the tool description for the package list."
11 tool updates
- First observed
beycome_check_coverage - First observed
beycome_comps - First observed
beycome_disclosures - First observed
beycome_estimate - First observed
beycome_list - First observed
beycome_mls_questionnaire - First observed
beycome_publish - First observed
beycome_sell_timing - First observed
beycome_showings - First observed
beycome_signin - First observed
beycome_signup
Related MCP Connectors
Puerto Rico & Colombia real estate: listings, sales, parcels, permits, analytics, AVM reports.
Free AI-run real estate CRM. Brokers: Florida recruiting lists, County Watch, auto email, BYO MLS.
312K+ FL commercial parcels, 6,400+ verified listings, AI visibility reports, x402 micropayments
U.S. real-estate data: property records, AVM value + rent estimates, sale/rental listings.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables searching US residential foreclosure/REO/short-sale auction listings by state and county, with detailed property facts, sale event dates, venues, and bid/sale prices labeled by status.123 npm1MIT
- AlicenseAqualityBmaintenanceReal Estate Listing - MCP server providing AI-powered tools and automation by MEOK AI Labs55 npm1MIT
- AlicenseAqualityAmaintenanceProvides real estate data from homes.com via a browser session, enabling property search, details, history, and affordability calculations through natural language.21120 npmMIT
- AlicenseNot gradedqualityDmaintenanceLive real estate market data for 895 US metros. Ask your AI assistant about home prices, rental yields, investment health scores, migration trends, and affordability. Free tier covers top 50 markets (no account needed). Premium tier unlocks all 895 markets, HUD Fair Market Rents, side-by-side market comparison, and filtered market search.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.