Skip to main content
Glama

SPACEXPLORATION

Server Details

Search commercial real estate listings. Reads need no token; authoring is self-serve OAuth (DCR).

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 15 of 15 tools scored. Lowest: 2.9/5.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: listing CRUD, attachment upload workflow, search with interpret, geocoding, saved searches, and registry retrieval. No two tools overlap significantly; even the upload-related tools (sign, confirm, attach) are sequential and distinct.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., create_listing, get_registry, search_listings). The naming is predictable and clear, with no mixing of conventions.

Tool Count5/5

With 15 tools, the server covers the core functionalities of a commercial real estate listing system without being bloated. Each tool serves a necessary role, and the count feels well-scoped for the domain.

Completeness2/5

The tool set is missing critical lifecycle operations: there is no way to delete or archive a listing, nor any tool to publish/unpublish a listing. This leaves an obvious gap in the basic CRUD workflow, which will cause agent failures when users need to remove or finalize listings.

Available Tools

15 tools
attach_listing_photoAttach Listing Photo ToolAInspect

Attach a photo to a listing you own directly from its public URL — one call, no separate sign/upload/confirm. The server fetches the image and ingests it with auto-generated thumbnail/hero/full variants. Only https image URLs whose host is publicly routable are accepted. The photo is content-moderated (must be real-estate related and safe) before it can appear publicly — the returned snapshot includes the moderation_status (approved / rejected / escalated) and moderation_reason. A rejected or escalated photo will not be publicly visible and will block publishing until removed or replaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashidYesHashid of the listing to attach the photo to.
source_urlYesPublic https URL of the image to fetch and attach. Must point directly at an image (jpeg, png, webp, gif, avif, heic/heif) on a publicly-routable host.
Behavior5/5

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

Discloses server-side behavior: fetches image, generates variants, performs content moderation. Details outcome fields (moderation_status, moderation_reason) and their impact on visibility. Since annotations are empty, the description fully covers behavioral traits.

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 main purpose and is generally efficient, but slightly verbose in explaining moderation details. Every sentence adds value, but could be slightly more concise.

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?

For a tool with no output schema, the description adequately explains return values (moderation_status, moderation_reason) and effects on listing publishing. Covers constraints, process, and outcomes completely given the tool's complexity.

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

Parameters5/5

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

Adds meaning beyond schema: explains source_url must be a direct image URL with specific formats (jpeg, png, etc.) and that hashid identifies the listing. Also describes how the parameters affect the result (moderation). Schema coverage is 100%, but description enriches understanding.

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 explicitly states 'Attach a photo to a listing you own directly from its public URL', clearly identifying the verb (attach), resource (photo to listing), and distinguishing it from sibling tools like confirm_attachment_upload or sign_attachment_upload by emphasizing the one-call process.

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

Usage Guidelines5/5

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

Provides clear when-to-use guidance ('one call, no separate sign/upload/confirm') and when-not-to (e.g., if you need separate steps). It specifies constraints like 'only https image URLs whose host is publicly routable' and notes that rejected/escalated photos block publishing.

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

confirm_attachment_uploadConfirm Attachment Upload ToolAInspect

Finalize an out-of-band upload after the file bytes have been PUT to the presigned URL. Verifies the stored object matches what was signed (size and content-type) and marks the attachment ready. Returns the attachment snapshot with its public variant URLs. Idempotent: confirming an already-confirmed upload returns the same snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_idYesThe attachment_id (ULID) returned by sign_attachment_upload. Confirm only after the file bytes have been successfully PUT to the presigned URL.
Behavior5/5

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

With no annotations, the description fully discloses behavior: it verifies size and content-type, marks the attachment ready, returns the snapshot with public URLs, and is idempotent. This gives the agent clear expectations.

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 sentences, no fluff, front-loaded with the main action, and each sentence adds necessary information. Highly concise and well-structured.

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 single parameter and no output schema, the description covers preconditions, behavior, idempotency, and return value. It is fully complete for an agent to use this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds meaningful context by specifying that the attachment_id is returned by sign_attachment_upload and that confirmation should occur only after the PUT is complete.

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

Purpose5/5

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

The description uses a specific verb (confirm) and resource (attachment upload), and clearly distinguishes from the sibling tool 'sign_attachment_upload' by explaining it finalizes the upload after the file bytes have been PUT.

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 explicitly states the precondition 'Confirm only after the file bytes have been successfully PUT to the presigned URL.' It does not mention alternatives or when not to use, but for a single-step tool in a workflow, this is sufficient guidance.

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

create_listingCreate Listing ToolAInspect

Create a new draft listing. Returns the full created listing exactly as stored, including its hashid and status. Pass an idempotency_key (any client-generated string, e.g. a UUID) to make the call safe to retry — re-sending the same key returns the original listing instead of creating a duplicate.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity.
unitNoUnit or suite number, if applicable.
stateYesState (2-letter abbreviation).
countyYesCounty.
latitudeYesLatitude coordinate.
place_idNoPlace ID from geocoder.
longitudeYesLongitude coordinate.
postal_codeYesZIP/postal code.
listing_typeYesListing type: sale or lease.
property_typeYesProperty type. Allowed values are listed under the property_type attribute returned by get_registry (e.g. industrial, office, retail, land).
street_addressYesStreet address of the property.
idempotency_keyNoOptional client-generated key (e.g. a UUID) making this create safe to retry: re-sending the same key within 24 hours returns the originally created listing instead of a duplicate.
formatted_addressNoFull formatted address string from geocoder.
Behavior4/5

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

Describes return value (full listing with hashid and status) and idempotency retry behavior. Annotations are empty, so description carries full burden; lacks details on auth or rate limits but covers key behaviors.

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 sentences, front-loaded with purpose and return info, then idempotency detail. No wasted words, efficient structure.

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?

Adequate for a creation tool with 13 params fully documented in schema. Missing context on what 'draft' implies or default initial status, but output schema is absent and description explains return.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3), but description adds significant value by explaining idempotency_key behavior beyond schema description, clarifying retry semantics.

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?

Clearly states 'Create a new draft listing' with specific verb and resource. Distinguishes from sibling tools like update_listing and get_listing by focusing on creation.

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 explicit guidance on using idempotency_key for safe retries. Does not explicitly exclude when not to use, but the purpose is clear and no direct alternatives are mentioned.

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

geocode_addressGeocode Address ToolA
Read-only
Inspect

Geocode a free-form US address into coordinates and structured components (street_address, city, county, state, postal_code) plus a formatted address and place_id — exactly the identity fields create_listing requires. Use this first, then pass the result straight into create_listing instead of supplying your own coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesFree-form address to geocode, e.g. "3763 Imperial St, Frederick, CO 80516".
Behavior4/5

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

Annotations already declare readOnlyHint=true, indicating no side effects. The description adds value by listing the exact output fields (street_address, city, etc.) and noting the output aligns with create_listing requirements, going beyond 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.

Conciseness5/5

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

The description is two sentences long, front-loads the core functionality, and includes a usage tip. Every sentence serves a purpose without redundancy.

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 simple single-parameter tool, the description fully explains input, output, and integration with create_listing. No output schema is needed as the description covers the return structure adequately.

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

Parameters3/5

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

The input schema already covers 100% of the parameter (address) with a clear description. The tool description does not add new semantic details beyond the schema, so baseline score of 3 is appropriate.

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's verb (geocode) and resource (free-form US address) and specifies the expected output (coordinates and structured components). It also directly links to the sibling tool create_listing, distinguishing its purpose.

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

Usage Guidelines5/5

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

The description explicitly provides a usage guideline: 'Use this first, then pass the result straight into create_listing instead of supplying your own coordinates.' This tells when and how to use the tool relative to alternatives.

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

get_listingGet Listing ToolA
Read-only
Inspect

Retrieve the full details of a single listing by its hashid. Returns the complete ListingResource projection including parcel data, all attribute details, and attachments. Broker contact is included only when the requesting user is authorised.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashidYesThe short hashid of the listing (e.g. "a1b2c3d4"). Found in listing URLs and search hits.
Behavior4/5

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

Annotations already mark readOnlyHint=true, and the description adds useful behavioral detail: broker contact is conditional on authorization, and the return includes specific resources (parcel, attributes, attachments).

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 sentences, no filler, front-loaded with the core purpose. Every sentence adds value.

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 (one param, no output schema, read-only annotations), the description fully covers what is returned and a conditional behavior. No gaps.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds practical context for the hashid parameter (e.g., found in URLs and search hits), which helps agents understand how to obtain it.

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 it retrieves full details of a single listing by hashid, which is specific and distinct from sibling tools like search_listings (multiple) or create_listing (creation).

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?

Implied usage is for retrieving a single listing by hashid, and context signals show siblings like search_listings for broader queries. However, no explicit when-not or alternative guidance is provided.

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

get_registryGet Registry ToolA
Read-only
Inspect

Returns the full attribute registry — every searchable and filterable field, its type, allowed values, and display label. Read this first to understand the schema before calling search_listings with attribute filters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description's safety disclosure is sufficient. It adds behavioral context by emphasizing that this is a prerequisite schema exploration tool, which goes beyond 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.

Conciseness5/5

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

Two sentences with zero waste. Front-loaded key purpose, then provides usage guidance. Every word 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?

For a zero-parameter tool with no output schema, the description is fully complete. It explains what the tool returns and when to use it, addressing both purpose and context.

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

Parameters4/5

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

No parameters exist, so the description has no burden to explain them. It adds value by describing the output content (fields, types, allowed values, label), which compensates for the lack of an output schema.

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 that the tool returns the full attribute registry including all searchable fields, types, allowed values, and labels. It distinguishes itself from sibling tools by being a schema introspection tool rather than a data manipulation tool.

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?

Explicitly instructs to read this before calling search_listings with filters, providing clear context for when to use. Does not explicitly mention when not to use, but the guidance is strong enough for correct invocation.

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

list_my_listingsList My Listings ToolA
Read-only
Inspect

List all listings owned or brokered by the authenticated user. Optionally filter by status. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by listing status. One of: draft, pending_payment, active, suspended, sold, leased, withdrawn. Omit to return all statuses.
Behavior4/5

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

Annotations declare readOnlyHint=true, and description adds authentication requirement. No additional behavioral details (e.g., pagination, rate limits) but sufficient for a simple list operation.

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 sentences conveying all necessary information without waste. Every sentence adds value.

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?

For a simple read-only list tool with one optional parameter, the description covers purpose, auth, and filtering. No output schema needed, and siblings are provided. Lacks explicit pagination info but acceptable.

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%, providing full semantics for the 'status' parameter. The description only restates the filter option, adding no new information beyond the schema.

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

Purpose5/5

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

The description states it lists listings owned or brokered by the authenticated user, with an optional status filter. This clearly distinguishes it from sibling tools like search_listings or get_listing.

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?

Specifies requires authentication and optional status filter, but does not explicitly differentiate from siblings like search_listings (broader search) or provide 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.

list_my_saved_searchesList My Saved Searches ToolA
Read-only
Inspect

List the authenticated user's saved searches, including their filters and alert schedule. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

The description adds context beyond the annotation (readOnlyHint: true) by stating that the tool returns filters and alert schedule, and requires authentication. This enhances transparency without contradiction.

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 succinct sentences: the first covers purpose and output, the second covers a key constraint. No unnecessary words.

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?

The description is sufficient for a read-only list tool with no parameters and no output schema. It tells the user what to expect (filters and alert schedule) and the required condition (authentication). Minor detail like array return could be added but not essential.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, the description has no parameter details to add. The baseline for 0 parameters is 4, which is appropriate.

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 verb 'List', the resource 'saved searches', and specifies what is included (filters and alert schedule). It effectively distinguishes from sibling tools like 'delete_saved_search' and 'save_search'.

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 mentions 'Requires authentication', which is an important usage condition. While it doesn't explicitly state when to use vs alternatives, the context is clear given the tool's specific purpose and sibling names.

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

search_listingsSearch Listings ToolA
Read-only
Inspect

Search commercial real estate listings. Returns paginated hits with facet counts. For AI-driven search, call interpret_search first to convert a natural-language query into structured filters, then pass those filters — and its bounds, when present — here.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based). Defaults to 1.
sortNoSort key. Valid values from get_registry sort_options (e.g. "listed_at:desc", "price:asc").
queryNoFree-text search query (street address, city, or keyword). Omit or pass null for no text filter.
boundsNoGeographic bounding box (degrees) limiting hits to an area. Forward the bounds returned by interpret_search verbatim to honour "near <place>" intent; omit for a nationwide search.
filtersNoStructured filter map keyed by Typesense field name. Ranges as {min?, max?}, multi-select as string[], booleans as true/false. Call get_registry to see valid field names and allowed values.
Behavior5/5

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

The readOnlyHint annotation is respected. Description adds that results are paginated and include facet counts, which is helpful beyond 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.

Conciseness5/5

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

Two clear, focused sentences with zero waste. First sentence states core function, second provides critical workflow guidance.

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 no output schema, the description adequately covers return format (paginated, facet counts). References sibling tools for complementary actions, making it complete for the user's workflow.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds workflow context: instructs to forward bounds from interpret_search and use get_registry for valid filters. This ties parameters together meaningfully beyond individual schema descriptions.

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 it searches commercial real estate listings and returns paginated hits with facet counts. It distinguishes itself from sibling tools by referencing interpret_search for AI-driven search.

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

Usage Guidelines5/5

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

Explicitly advises to call interpret_search first for natural-language queries and pass its filters and bounds. Also mentions get_registry for valid field names, providing clear when-to-use guidance versus alternatives.

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

set_listing_attributesSet Listing Attributes ToolA
Idempotent
Inspect

Set broker-authored attributes on a listing you own. Pass attributes as a map of registry field name to value (the field names get_registry returns, e.g. {"attr_parking_spaces": 40, "attr_office_class": "Class A"}). Only fields get_registry marks "writable":true can be set; publish-time computed fields and hot columns (use update_listing for those) are rejected with guidance. Enum fields take the allowed value (or an array for multiselect); send null to clear a field. Returns the full updated listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashidYesHashid of the listing to update.
attributesYesMap of registry field name to value, e.g. {"attr_parking_spaces": 40, "attr_office_class": "Class A", "attr_industrial_rail_access": true}. Only fields get_registry marks "writable":true are accepted. Multiselect enum fields take an array of allowed values. Send null to clear a field.
Behavior5/5

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

Annotations idempotentHint=true are consistent. Description adds details about return value (full updated listing), handling of enum fields, and rejection of non-writable fields with guidance.

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?

Single paragraph, front-loaded with action, then parameter details. Every sentence adds value; no wasted words.

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?

No output schema, but description states returns full updated listing. Covers all behavioral aspects: ownership, writable fields, enum handling, null clearing, interaction with get_registry and update_listing.

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

Parameters4/5

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

Schema coverage is 100%, but description adds essential context: the attributes map format referencing registry field names, writable constraint, enum handling, and null clearing. This enhances understanding beyond schema.

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?

Clearly states it sets broker-authored attributes on a listing you own, distinguishing it from siblings like update_listing which handles hot columns.

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

Usage Guidelines5/5

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

Explicitly specifies when to use (writable fields from get_registry) and when not to use (hot columns: use update_listing), and provides guidance on enum fields and clearing with null.

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

sign_attachment_uploadSign Attachment Upload ToolAInspect

Begin an out-of-band file upload. Returns a presigned R2 PUT URL and the headers to use; the file bytes are uploaded directly to storage, never through this channel. After PUTting the file, call confirm_attachment_upload with the returned attachment_id. Supports listings (photos, documents), users (avatar), and pages (cover, photos).

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYesExact byte size of the file. Verified against the uploaded object at confirm time, so it must be accurate.
filenameYesOriginal filename including extension, e.g. "front-elevation.jpg". Used to derive the storage key and extension.
collectionNoOptional explicit collection: "photos", "documents", "avatar", "logo", or "cover". Omit to auto-route by MIME (images→photos, docs→documents). Singleton slots (avatar/cover/logo) must be set explicitly.
content_typeYesMIME type of the file, e.g. "image/jpeg" or "application/pdf". Must match the collection whitelist.
attachable_idYesIdentifier of the attachable resource. For "listing" pass the listing hashid (e.g. "d5yqqgoa") — the same id every read tool returns. For "user" pass "me" to attach to yourself. For "page" pass its numeric id.
attachable_typeYesMorph alias of the resource to attach to: "listing", "user", or "page".
Behavior3/5

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

The description reveals the tool returns a presigned URL and headers, and that the file is uploaded out-of-band. It mentions supported attachable types and auto-routing. But with no annotations, it lacks details on auth requirements, rate limits, URL expiry, or error handling for failed uploads.

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 concise with four focused sentences. The first sentence states the core action, followed by output details, next steps, and supported resources. Each sentence adds value without redundancy.

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?

Given 6 parameters and no output schema, the description covers the workflow and resource types but omits details on the response structure (e.g., exact fields in the presigned URL response) and constraints like file size or content type validation limits.

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

Parameters4/5

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

Schema coverage is 100% and the description adds valuable context beyond parameter descriptions, such as examples for attachable_id (hashid, 'me', numeric ID) and auto-routing logic for collection. This enhances agent understanding.

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 'Begin an out-of-band file upload' and explains it returns a presigned URL for direct upload. It lists supported resource types (listings, users, pages) and distinguishes from typical upload flows by noting 'file bytes are uploaded directly to storage, never through this channel.' This makes the tool's purpose 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 actionable steps: after PUTting, call confirm_attachment_upload. It explains auto-routing versus explicit collection and singleton constraints. However, it does not explicitly compare with sibling tools (e.g., attach_listing_photo) or state when not to use this tool, leaving some ambiguity.

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

update_listingUpdate Listing ToolA
Idempotent
Inspect

Update a listing's parcel, pricing, or marketing data. Pass at least one group (parcel, pricing, marketing); send each group whole, not just the changed field. Returns the full updated listing exactly as stored.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashidYesHashid of the listing to update.
parcelNoParcel/address fields to update: street_address, city, county, state, postal_code, latitude, longitude, and optionally unit, lot_acres, year_built, property_type.
pricingNoPricing fields to update: listing_type (sale|lease); for a sale set sale_price (dollars), for a lease set lease_rate (per the lease_rate_period basis, default per_sqft_year) and optionally lease_rate_period (per_sqft_year|per_sqft_month|per_month|per_year). Omit the price and set price_on_request=true for "price upon request". Optionally expires_at (ISO date).
marketingNoMarketing copy to update: headline, summary, title_override, highlights (string[]).
Behavior4/5

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

Annotations declare idempotentHint: true, so no behavioral contradiction. The description adds that the tool returns the full updated listing, which is valuable beyond annotations. It does not disclose error handling or side effects, but the idempotency annotation already covers safe re-execution.

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 only two sentences, front-loaded with the action, and every word adds value. No redundancy or extraneous detail.

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

Completeness4/5

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

Given the tool's complexity (three update groups, send-whole requirement), the description covers key operational aspects. It lacks explanation of prerequisites or error scenarios, but the rich schema and annotations fill many gaps.

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

Parameters4/5

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

Schema coverage is 100% with clear parameter descriptions. The description adds the critical usage nuance of sending whole groups, which goes beyond schema. It also notes the return value, compensating for the absence of an output schema.

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 updates a listing's parcel, pricing, or marketing data, distinguishing it from sibling tools like create_listing (creates) and get_listing (retrieves). The verb 'update' combined with specific resources provides precise purpose.

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 explicitly instructs to pass at least one group and send each group whole, not just changed fields. This provides practical guidance, though it does not explicitly contrast with tools like set_listing_attributes for attribute-specific updates.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources