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.
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.
Tool Definition Quality
Average 4.4/5 across 15 of 15 tools scored. Lowest: 2.9/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.
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.
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.
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 toolsattach_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.
| Name | Required | Description | Default |
|---|---|---|---|
| hashid | Yes | Hashid of the listing to attach the photo to. | |
| source_url | Yes | Public 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. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_id | Yes | The attachment_id (ULID) returned by sign_attachment_upload. Confirm only after the file bytes have been successfully PUT to the presigned URL. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City. | |
| unit | No | Unit or suite number, if applicable. | |
| state | Yes | State (2-letter abbreviation). | |
| county | Yes | County. | |
| latitude | Yes | Latitude coordinate. | |
| place_id | No | Place ID from geocoder. | |
| longitude | Yes | Longitude coordinate. | |
| postal_code | Yes | ZIP/postal code. | |
| listing_type | Yes | Listing type: sale or lease. | |
| property_type | Yes | Property type. Allowed values are listed under the property_type attribute returned by get_registry (e.g. industrial, office, retail, land). | |
| street_address | Yes | Street address of the property. | |
| idempotency_key | No | Optional 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_address | No | Full formatted address string from geocoder. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
delete_saved_searchDelete Saved Search ToolADestructiveInspect
Delete a saved search by its ID. Only the owner may delete their own searches. Requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The numeric ID of the saved search to delete (from list_my_saved_searches). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true. Description adds ownership and auth requirements, going beyond annotations with useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no fluff. Purpose front-loaded in first sentence. Every word 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 simple deletion tool with one parameter and no output schema, description covers ownership, auth, and parameter source fully.
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 covers 100% of parameters. Description for 'id' adds value by specifying it comes from list_my_saved_searches, aiding proper invocation.
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?
Clear verb 'Delete' + resource 'saved search' by ID. Distinguishes from siblings like save_search (create) and list_my_saved_searches (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?
States owner-only restriction and authentication requirement, guiding when to use. Lacks explicit alternative for non-owner but provides key usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geocode_addressGeocode Address ToolARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Free-form address to geocode, e.g. "3763 Imperial St, Frederick, CO 80516". |
Tool Definition Quality
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.
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.
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.
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.
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.
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 ToolARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hashid | Yes | The short hashid of the listing (e.g. "a1b2c3d4"). Found in listing URLs and search hits. |
Tool Definition Quality
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.
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.
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.
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.
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.
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 ToolARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
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.
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.
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.
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.
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.
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.
interpret_searchInterpret Search ToolARead-onlyInspect
Translate a natural-language property-search sentence into a structured filter payload compatible with search_listings. Use this as a transparent intermediate step: pass the user's raw query here, then forward the returned filters — and the returned bounds, when present (they carry the "near " intent) — to search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | A natural-language property search sentence from the end user. Example: "industrial with rail access in Denver under $5m". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds that it returns filters and bounds, and is a transparent step, providing additional behavioral context beyond annotations.
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 sentences, no wasted words. Front-loaded with main purpose and clear actionable instructions.
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?
Given single parameter, no output schema, and read-only annotation, the description fully explains tool behavior, usage pattern, and return values (filters and bounds). No gaps for an AI agent.
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 parameter description. Description adds a concrete example ('industrial with rail access in Denver under $5m') which aids understanding, elevating from baseline 3 to 4.
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 clearly states the tool translates natural-language property searches into structured filter payloads for search_listings, distinguishing it from other tools. It specifies verb 'translate' and resource 'property-search sentence'.
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 instructs to use as intermediate step: pass user query, then forward filters and bounds to search_listings. Provides clear context and alternative (search_listings) for downstream use.
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 ToolARead-onlyInspect
List all listings owned or brokered by the authenticated user. Optionally filter by status. Requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by listing status. One of: draft, pending_payment, active, suspended, sold, leased, withdrawn. Omit to return all statuses. |
Tool Definition Quality
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.
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.
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.
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.
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.
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 ToolARead-onlyInspect
List the authenticated user's saved searches, including their filters and alert schedule. Requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
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.
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.
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.
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.
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.
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.
save_searchSave Search ToolCInspect
Save the current search as a named alert. The user will receive email digests when new matching listings appear. Requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A human-readable name for the saved search. If omitted, a name is derived from the filters. | |
| query | No | The free-text query string, if any. | |
| filters | No | The structured filter map to persist (same shape as search_listings filters). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses email digest behavior and authentication need, but with empty annotations, it carries full burden. Does not state side effects like overwriting existing saved searches with the same name, or the scope of the 'current search' (e.g., from a prior search_listings call).
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 sentences, efficient and front-loaded with key information (save, alerts, authentication). However, some detail is sacrificed for brevity.
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?
Given the tool is a mutation with no output schema and 3 optional parameters, the description lacks critical context about the effect of parameters, return value (e.g., confirmation or ID), and error handling. Incomplete for an agent to use reliably.
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% (all 3 parameters described in schema). The description adds no additional meaning beyond what schema provides. 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 clearly states the tool saves a search as a named alert and mentions email digests. It distinguishes from sibling tools like delete_saved_search and list_my_saved_searches, but does not explicitly specify what 'current search' refers to.
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?
Only mentions 'Requires authentication.' Provides no guidance on when to use this tool versus alternatives like search_listings or interpret_search. Missing context about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch Listings ToolARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). Defaults to 1. | |
| sort | No | Sort key. Valid values from get_registry sort_options (e.g. "listed_at:desc", "price:asc"). | |
| query | No | Free-text search query (street address, city, or keyword). Omit or pass null for no text filter. | |
| bounds | No | Geographic 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. | |
| filters | No | Structured 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. |
Tool Definition Quality
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.
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.
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.
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.
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.
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 ToolAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hashid | Yes | Hashid of the listing to update. | |
| attributes | Yes | Map 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. |
Tool Definition Quality
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| size | Yes | Exact byte size of the file. Verified against the uploaded object at confirm time, so it must be accurate. | |
| filename | Yes | Original filename including extension, e.g. "front-elevation.jpg". Used to derive the storage key and extension. | |
| collection | No | Optional 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_type | Yes | MIME type of the file, e.g. "image/jpeg" or "application/pdf". Must match the collection whitelist. | |
| attachable_id | Yes | Identifier 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_type | Yes | Morph alias of the resource to attach to: "listing", "user", or "page". |
Tool Definition Quality
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.
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.
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.
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.
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.
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 ToolAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hashid | Yes | Hashid of the listing to update. | |
| parcel | No | Parcel/address fields to update: street_address, city, county, state, postal_code, latitude, longitude, and optionally unit, lot_acres, year_built, property_type. | |
| pricing | No | Pricing 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). | |
| marketing | No | Marketing copy to update: headline, summary, title_override, highlights (string[]). |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!