Skip to main content
Glama

send_message

START contact with the owner of a Teppek LISTING on the user's behalf (identified by the listing) — the primary FIRST-CONTACT path (there is no price-offer/accept/reject flow). Opens a private thread with the owner; contact routes through Teppek and never exposes raw personal details. To continue a thread that already EXISTS (you have a thread_id from list_conversations), use reply_to_conversation instead. External-feed listings (e.g. imported jobs) have no Teppek owner, so this returns a redirect to the external application URL instead of creating a thread. Requires the user to be connected to Teppek: an anonymous call returns an AUTH_REQUIRED error with an authorize_url — surface 'Connect with Teppek' to the user, then retry.

Input Schema

NameRequiredDescriptionDefault
bodyYesThe message to send to the listing owner, up to 2000 characters. Contact routes through Teppek; raw personal details are never exposed. Example: "Hello, can I view the flat this week?"
listing_idYesListing id, taken from the `id` field of search_listings, semantic_search or list_my_listings results. Example: "adzuna-us-5947308680".

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  2. Changed2 schema fields changed
    • changedInput schema / properties / body / description
      Previous value: -"The message to send to the listing owner. Contact routes through Teppek; raw personal details are never exposed."New value: +"The message to send to the listing owner, up to 2000 characters. Contact routes through Teppek; raw personal details are never exposed. Example: \"Hello, can I view the flat this week?\""
    • addedInput schema / properties / listing_id / description
      Added value: +"Listing id, taken from the `id` field of search_listings, semantic_search or list_my_listings results. Example: \"adzuna-us-5947308680\"."
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {},
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations (which only say non-readonly, open-world, non-idempotent): discloses that contact routes through Teppek without exposing personal details, that external-feed listings return a redirect URL instead of a thread, and that anonymous calls return AUTH_REQUIRED with an authorize_url to surface. This is exactly the behavioral context an agent needs.

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

Conciseness4/5

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

Front-loads the core action and the sibling alternative before edge cases, and every clause carries information. It is somewhat dense as a single paragraph with multiple parentheticals, which slightly hurts scannability.

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

Completeness5/5

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

An output schema exists so return values need no explanation, and the description still covers the tricky cases (redirect for external listings, AUTH_REQUIRED flow). Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so listing_id and body are already documented in the schema, including length limits and examples. The description adds only the provenance hint for listing_id indirectly; baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb (START contact), a specific resource (owner of a Teppek LISTING), and the scope (primary first-contact path, no offer/accept flow). It is immediately distinguishable from reply_to_conversation and other siblings.

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 names the alternative (reply_to_conversation with a thread_id from list_conversations) and the condition that selects it, plus clarifies there is no price-offer flow. When-to-use and when-not-to-use are both covered.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources