Skip to main content
Glama

Server Details

Map-first global classifieds marketplace — search and post listings across jobs, real estate, vehicles, and services, on behalf of a signed-in user.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

16 tools
create_listingAInspect

Publish a listing on behalf of the user across any of the 4 verticals and 12 roles. location must be coordinates ({ lat, lon }) — a free-text address is not accepted, so geocode it first. Before publishing, call get_entitlements to confirm the user has credit and a free listing slot — a reached limit makes this return an ACTIVE_LISTING_LIMIT_REACHED error carrying a pay_url. Consumes credits and is held for AI moderation (status starts "pending"); credits are refunded if rejected, EXCEPT for prohibited or spam content, which forfeits the credit. To attach photos, first call request_image_upload for each image and pass the returned keys in images — every image is AI-moderated with the text before going live. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesThe listing role — this alone fixes supply vs demand (do not send intent_type). vehicle_letter = you OWN the vehicle and are renting it OUT (lessor); for a user who WANTS to rent a vehicle use vehicle_renter. Likewise estate_landlord (renting out) vs estate_renter (wants to rent), estate_seller vs estate_buyer, career_employer (posting a job) vs career_seeker (a CV), service_pro (offering) vs service_client (wants a service).
priceYes
titleYes
imagesNo
detailsNo
currencyYesISO-4217 currency code matching the listing country (e.g. USD, EUR, GBP, TRY). Required — there is no default, to avoid silently mislabeling non-Turkish listings.
locationYesListing coordinates as { lat, lon }. A free-text address is NOT accepted — resolve it to coordinates before calling.
verticalYes
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only flag readOnly=false and openWorld=true; the description goes far beyond them by disclosing credit consumption, the pending AI-moderation state, the refund policy with the prohibited/spam exception, and both error paths (ACTIVE_LISTING_LIMIT_REACHED with pay_url, AUTH_REQUIRED with authoriz_url) plus the recommended user-facing recovery action. No contradiction with annotations.

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?

Six sentences deliver purpose, a format constraint, two preconditions, side effects, moderation/refund policy, and auth recovery — acroximately 180 words for a 9-param tool with 16 siblings. No sentence is redundant, and the critical constraints are front-loaded before the workflow details.

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?

This is a highly complex mutating tool with 9 params, nested location and details objects, credit side effects, moderation, and auth — yet preconditions, side effects with exceptions, and error recovery are all specified. Because an output schema exists, the lack of return-format prose is not a gap.

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

Parameters3/5

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

With only 33% schema coverage, the description compensates for the two most error-prone paramaters: it reinforces that location must be {lat, lon} coordinates, and it defines the images semantic — keys returned by request_image_upload, not URLs. However, six paramaters including the opaque details object receive no added meaning beyond what the schema provides.

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?

Opens with a specific verb and resource — 'Publish a listing on behalf of the user' — and immediately scopes it to the 4 verticals and 12 roles. This clearly distinguishes create_listing from mutation siblings like update_listing, delete_listing, renew_listing, and set_listing_status without needing to inspect any schema.

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

Usage Guidelines4/5

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

Gives explicit workflow guidance: a prior get_entitlements call to confirm credit and slot, a prior request_image_upload call for each photo, and a connected Teppek account are all stated as prerequisites. It does not explicitly state when-not-to-use or route to an alternative, but the precondition sequencing defines the usage context clearly.

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

delete_listingA
DestructiveIdempotent
Inspect

Delete (soft-delete) one of the USER'S OWN listings by listing_id. Only the owner can delete. No credit is refunded — the listing was already published.

ParametersJSON Schema
NameRequiredDescriptionDefault
listing_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=true), the description adds important behavioral context: the operation is a soft-delete, only the owner may perform it, and no credit is refunded. This meaningfully enriches what the agent can infer from the annotations alone.

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 no filler. The action, scope, permission, and consequence are all front-loaded, making the purpose immediately clear.

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, clear annotations, and presence of an output schema, the description covers the essential details: what happens, who may do it, and a key financial consequence. Nothing critical is missing for correct selection and invocation.

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?

The schema provides only the listing_id type and length with no description. The tool description compensates by explaining that listing_id refers to one of the user's own listings, giving the parameter practical meaning and constraints beyond the raw 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 a specific verb ('Delete') and resource ('one of the USER'S OWN listings') with a clear scope restriction. It also clarifies 'soft-delete', which distinguishes it from permanent deletion and from sibling tools like update_listing or set_listing_status.

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 clearly communicates when the tool should be used: to delete a listing owned by the current user, and only by the owner. It does not explicitly name alternative tools or exclusion conditions, but the ownership and soft-delete context provides solid guidance.

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

get_conversationA
Idempotent
Inspect

Read one of the user's OWN message conversations by thread_id, including its messages (marks incoming messages read). Only threads the authenticated user participates in are returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (idempotent, non-destructive, readOnlyHint=false), the description explicitly discloses a side effect: 'marks incoming messages read'. This is valuable behavioral context that aligns with and enriches the annotation flags, and it also clarifies the access boundary.

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 tightly packed sentences with zero filler. The action and target appear first, followed by the behavioral side effect and the access constraint. Every clause 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?

With an output schema present and only one input parameter, the description covers the essential behavior: what is read, how it is identified, who can access it, and the read-marking side effect. Nothing critical is missing for an agent to invoke this correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains that thread_id identifies which conversation to read, but adds little about the identifier's format or where to obtain it. For a single self-explanatory parameter, this is adequate but not comprehensive.

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 opens with the specific verb 'Read' and the resource 'message conversations by thread_id', immediately distinguishing this single-conversation retrieval tool from siblings like list_conversations. It also adds the critical scope qualifier 'OWN' and clarifies it only returns threads the authenticated user participates in.

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 clearly conveys when to use this tool: to read a specific conversation by thread_id. It provides context about ownership and participation constraints, but it does not explicitly name alternatives like list_conversations for listing threads or reply_to_conversation for responding.

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

get_entitlementsA
Read-only
Inspect

Check the user's publishing entitlements BEFORE attempting to publish: membership tier, max vs current active listings, remaining slots, wallet credit balance, the per-listing credit cost, and can_create_listing. When the limit is reached the response indicates whether the user can pay from wallet credit or should open checkout (pay_url).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already declare readOnlyHint=true, and the description adds valuable behavioral context beyond that: when the limit is reached, the response indicates whether the user can pay from wallet credit or should open checkout (pay_url). This conditional behavior is transparent and consistent with the read-only 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. The first sentence front-loads the purpose and the scoped field list, and the second adds the key conditional behavior. Every clause adds value with no 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 that an output schema exists, the description need not enumerate every return field. It covers the decision-relevant outputs and the conditional behavior at the limit, and the annotations cover the read-only safety profile. Nothing essential is missing for correct invocation.

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?

The tool has zero parameters, so the schema coverage is effectively 100% and no parameter descriptions are needed. The baseline for a 0-parameter tool is 4, and the description does not attempt to add irrelevant parameter detail.

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

Purpose5/5

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

The description clearly states the tool checks the user's publishing entitlements with a specific verb ('Check') and resource ('publishing entitlements'). It lists the exact fields returned (membership tier, slots, wallet balance, etc.), and it is easily distinguishable from sibling tools like create_listing or update_listing because it is explicitly a pre-publish, read-only check.

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 says to use it 'BEFORE attempting to publish,' which provides a clear trigger context. It does not explicitly state when not to use it or name alternative tools, but the pre-publish instruction is strong enough to guide correct usage.

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

get_listingA
Read-only
Inspect

Fetch the full detail of ONE Teppek listing by id — title, description, price/salary, location and the Teppek contact route. Use after search_listings to show, summarize or compare a specific job, home, vehicle or service the user picked.

ParametersJSON Schema
NameRequiredDescriptionDefault
listing_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
priceNo
titleNo
statusNo
currencyNo
verticalNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds scope and response contents, plus the contact-route nuance, but doesn't disclose behavior around invalid IDs, stale listings, or how openWorldHint affects results. It adds some value beyond annotations but is not deeply transparent.

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 no filler. The core action and scope are front-loaded, and the second sentence provides useful workflow context. Every sentence 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?

With an output schema present and readOnly/openWorld annotations covering safety, the description supplies the remaining needed context: it names the listing types, the fields returned, and the recommended preceding call. An agent has enough to select and invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the single listing_id parameter. It adds only 'by id' and implies the ID comes from search_listings; it doesn't describe the ID's format, origin, or how to recognize a valid one. The parameter is simple, but coverage is low and the description could do more.

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 opens with a specific verb and resource: 'Fetch the full detail of ONE Teppek listing by id'. It lists concrete content (title, description, price/salary, location, contact route) and explicitly scopes the resource to 'job, home, vehicle or service', clearly distinguishing it from list/search siblings.

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

Usage Guidelines4/5

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

It gives explicit workflow guidance: 'Use after search_listings to show, summarize or compare a specific... listing the user picked.' This tells the agent when in the flow the tool belongs and what task it serves. It does not explicitly state when not to use alternative tools, but the contrast with search_listings is clear.

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

list_conversationsA
Read-only
Inspect

List the user's OWN listing-message conversations (threads they started, or received as a listing owner), newest first. Resolved from the authenticated agent key — only ever this user's threads. Use get_conversation to read a thread's messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, and the description reinforces this by stating results are 'Resolved from the authenticated agent key' and 'only ever this user's threads.' It also adds useful behavior such as 'newest first' ordering. No contradictions exist, and the added context is helpful beyond the annotations.

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 compact and every sentence contributes value: scope and ordering, authentication-bound behavior, and a pointer to the sibling detail tool. It is well-structured and front-loaded with the primary purpose.

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 simple, read-only list operation with zero required parameters and an output schema, the description fully covers what the agent needs: scope, ordering, authentication context, and the next-step tool for reading message content. No important guidance 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 0%, and the description does not explicitly explain limit or offset. However, the parameter names are self-explanatory and the schema provides types, defaults, ranges, and min/max. The 'newest first' ordering statement gives relevant context for pagination. This is minimally adequate, but the description itself does not add significant parameter semantics 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 clearly states a specific verb and resource: 'List the user's OWN listing-message conversations.' It further clarifies the scope with 'threads they started, or received as a listing owner' and 'only ever this user's threads,' distinguishing it from simply listing all conversations or listings. It also points to get_conversation as the related read 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?

The description provides clear usage context by stating this lists only the authenticated user's own conversation threads, and explicitly directs the agent to use get_conversation for reading a thread's messages. It does not explicitly mention when not to use it relative to other siblings like reply_to_conversation or send_message, but the scoping and sibling pointer give adequate guidance.

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

list_my_listingsA
Read-only
Inspect

List the user's OWN listings (any status), newest first. Resolved from the authenticated agent key — only ever returns this user's listings. Use status='pending' to see what is awaiting moderation, status='rejected' for declined ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
statusNoFilter YOUR listings by moderation/lifecycle status. Use "pending" to see what is awaiting AI moderation, "rejected" for declined ones, "all" (default) for everything.all

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYes
listingsYes

TDQS

A4.3/5.0
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 behavior beyond that: authentication-bound resolution, strict scoping to the caller's own listings, and newest-first ordering. This gives the agent an accurate mental model without contradicting annotations.

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

Conciseness5/5

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

Two tight sentences carry all the essential information with no filler. The most decision-relevant facts, ownership scope and ordering, are front-loaded, and status guidance follows naturally.

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 read-only list tool with pagination parameters, an output schema, and safety annotations, the description covers purpose, scope, ordering, and status semantics. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is only 33%, so the description partially compensates by explaining the practical meaning of status values ('pending' awaiting moderation, 'rejected' declined). However, limit and offset are still left to the schema's defaults/constraints, which are self-evident but not semantically enriched.

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 a specific verb ('List'), resource ('the user's OWN listings'), and scope ('any status, newest first'). The explicit ownership boundary distinguishes this 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?

It clearly explains how to use status filters to view pending or rejected listings, and the 'only ever returns this user's listings' statement signals when this tool is appropriate. It does not explicitly name sibling alternatives, but the ownership scoping is enough routing context.

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

renew_listingAInspect

Renew one of the USER'S OWN listings — extend its expiry another 30 days (native listings lapse ~30 days after posting). Free — no credit charge. Renewing an expired listing returns it to active; a pending, rejected, sold, or draft listing cannot be renewed.

ParametersJSON Schema
NameRequiredDescriptionDefault
listing_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
listingYes
successYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the operation is free, that it adds 30 days, that expired listings become active again, and that pending/rejected/sold/draft listings are ineligible. These are material behavioral details that an agent needs beyond the basic mutating intent.

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 tightly written sentences with no filler. The core purpose and constraint are front-loaded, and each subsequent sentence adds a distinct fact: cost, expiration mechanics, and invalid states.

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 single-parameter tool with an output schema and mutation-related annotations present, the description covers the effect, cost, expiry behavior, and prohibited statuses. Nothing essential for correct invocation is missing.

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?

The only parameter, listing_id, has no schema description (0% coverage), but the description compensates by requiring it to reference one of the user's own listings and by defining eligibility statuses. It does not explicitly mention the parameter name, but the semantics are clear and sufficient for this simple 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?

Description states a specific action (renew), a specific resource (the user's own listings), and the concrete effect (extends expiry by 30 days). It clearly distinguishes from siblings like create_listing, update_listing, and set_listing_status because renewal has unique semantics around expiry and reactivation.

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 gives clear context for when to use this tool: to renew one of the user's own active or expired listings. It also states which statuses cannot be renewed, but it does not explicitly name alternative tools or conditions where another sibling should be used, so it falls just short of a 5.

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

reply_to_conversationAInspect

Reply into one of the USER'S OWN message conversations by thread_id — the message goes to the other participant. Works whether the user is the listing owner answering an inquiry or the inquirer following up. Contact routes through Teppek; raw personal details are never exposed. Find thread_id via list_conversations / get_conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe reply to post into the conversation. Contact routes through Teppek; raw personal details are never exposed.
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations mark this as a non-read-only, non-destructive operation. The description adds valuable context beyond annotations: 'Contact routes through Teppek; raw personal details are never exposed' explains privacy behavior, and it clarifies the message recipient. This is useful for an agent to understand side effects and constraints. No contradictions.

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, front-loaded with the primary action and then the usage nuance. Every sentence contributes: the first states what it does, the second covers when/how to use and the privacy aspect. No fluff or redundancy.

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 simple write operation with two parameters. It explains purpose, usage context, and where to find the required thread_id. Since the tool has an output schema, return values are covered elsewhere. Minor omissions like error behavior or explicit prerequisite ownership are not critical given the clear 'USER'S OWN' statement and annotations.

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?

The schema covers body with a meaningful description, but thread_id has no schema-level description. The tool description compensates by explaining that thread_id must come from existing conversations, directing the agent to list_conversations/get_conversation. This adds meaning beyond the bare schema, making up for the 50% coverage gap.

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 purpose: replying to an existing conversation identified by thread_id, with the message going to the other participant. It also notes both use cases (owner or inquirer following up), which distinguishes it from starting a new conversation (send_message). The phrasing is specific and unambiguous.

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

Usage Guidelines4/5

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

The description explains when to use this tool (replying into an existing conversation) and how to obtain the thread_id via list_conversations or get_conversation. It does not explicitly mention when not to use it or point to alternatives like send_message, but the context is clear enough for an agent to infer appropriate usage.

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

request_image_uploadAInspect

Get a short-lived upload grant to attach a photo to a listing you're about to publish (any vertical/role). Returns { key, upload_url, upload_token, headers_required }: POST the raw image bytes to upload_url with those headers, then pass the returned key in create_listing's images array. Images are AI-moderated (content safety + consistency with the listing text) before the listing goes live.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_sizeYes
content_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNo
upload_urlNo
upload_tokenNo
headers_requiredNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only provide low-level hints, so the description carries the disclosure burden. It meaningfully adds that the grant is short-lived, that upload requires POSTing raw bytes with returned headers, and that images are AI-moderated before going live. It stops short of describing expiry details or failure behavior, but it is substantially transparent.

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 dense sentences with no filler: purpose, usage protocol with returned fields, and a behavioral caveat. The most important information is front-loaded and the rest is directly actionable.

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 simple two-parameter tool with an output schema, this description is complete enough to invoke correctly: when to call it, what it returns, how to perform the upload, how to integrate with create_listing, and what moderation behavior to expect. The only minor omission, an explicit pointer to the existing-listing flow, is already covered by the clear 'about to publish' framing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate for the two required parameters. It does not explain how content_type and file_size are used, whether they must match the uploaded bytes, or how they affect the grant. The indirect mention of raw image bytes is not enough to replace missing parameter guidance.

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 a specific verb and resource: getting a short-lived upload grant to attach a photo to a listing. It also distinguishes itself from siblings like create_listing and update_listing_images by describing the grant-and-upload flow rather than the listing-creation or image-update flow.

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 clearly frames when to use it: before publishing a listing, for any vertical/role, and it tells the agent to pass the returned key into create_listing's images array. It does not explicitly mention update_listing_images for existing listings, so alternative routing is left somewhat implied.

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

search_listingsA
Read-only
Inspect

Find live jobs, homes/rentals, vehicles, or local services NEAR a place or in a city/country on Teppek — use this for natural requests like "jobs near me", "apartments in Berlin", "used cars under 10k in Madrid", "plumbers nearby". Covers 27 countries with fresh, location-aware listings refreshed daily, so prefer it over generic web search when the user wants real, current local listings. Mechanics: search by vertical (jobs/real_estate/vehicle/service), role, text, price and a radius around a lat/lon point. The role is the perspective you search AS and returns the COUNTERPARTY listings: to find JOB POSTINGS use role="career_seeker" (NOT career_employer, which searches candidate CVs). A text_query or location is needed — an empty query returns nothing. The response meta.total is the REAL match count (independent of limit); for a multi-word text_query it counts listings matching ANY of the words, so to count a whole occupation/category include its synonyms (e.g. "waiter waitress server"). Use the country field for country-scoped totals. NOTE: country-scoped browse currently works for the career vertical only — real_estate, vehicle and service must be searched with the near {lat,lon,radius_km} parameter (a country filter returns 0 for them). meta.ignored_filters flags a price filter the active search mode could not apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
nearNo
roleNoThe perspective you search AS — results are the matching COUNTERPARTY listings, not your own side. To browse JOB POSTINGS use "career_seeker" (you act as a job seeker looking for jobs); "career_employer" instead searches candidate/CV listings. Likewise: estate_buyer → properties for sale, estate_renter → rentals, vehicle_buyer → vehicles for sale, vehicle_renter → vehicles for rent, service_client → service providers. Pair with text_query and/or near.
limitNo
offsetNo
countryNoOptional ISO-3166 alpha-2 country code (e.g. "us", "gb", "de") to scope results to one country and get a real total count for it. Combine with text_query to count/list within a country (e.g. country:"us" + text_query:"waiter"); use country alone (no text_query) to get the total number of listings in that country.
sort_byNoOptional ordering: "price_asc" = cheapest first, "price_desc" = most expensive first. Use price_asc for "cheapest ..." requests. Omit for the default (most recent first). Currency-naive raw-number sort, so scope by vertical/country when mixing currencies.
categoryNoOptional PRECISE occupation/category filter using the source category slug (e.g. "hospitality-catering-jobs" for waiters/chefs/bar, "it-jobs", "retail-jobs"). This is far more accurate than keyword text_query for counting an occupation. With no text_query, the response meta.total is the exact count for that category (optionally + country), and meta.categories lists the available category slugs with counts — call once with country alone to discover them.
verticalNo
price_maxNoMaximum price/salary. Currency-naive raw-number compare (see price_min). If unapplied it appears in meta.ignored_filters.
price_minNoMinimum price/salary. CURRENCY-NAIVE: compared as a raw number against the listing price without normalizing currencies, so scope with `country` (or a role/vertical) when mixing regions. If the response cannot apply it, price_min is listed in meta.ignored_filters.
text_queryNo
intent_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaNo

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavior beyond the readOnly/openWorld annotations: empty queries return nothing, meta.total is the real match count and treats multi-word text_query as ANY-word matching, role returns counterparty listings, country-scoped browse returns 0 for non-career verticals, and meta.ignored_filters signals unappliable price filters. It also names currency-naive behavior. No contradiction with annotations.

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

Conciseness4/5

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

The description is dense but every sentence carries useful operating information. It is front-loaded with the purpose and example queries, then proceeds through mechanics, caveats, and filter behavior. It could be lightly reorganized into bullet-style sections, but there is no filler or repetition.

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 12-parameter tool with a nested near object and an output schema, the description covers the high-risk aspects: mandatory text_query/location, role direction, country-scoped vertical limitation, filter behavior, and total-count semantics. The output schema and parameter schemas handle return-value and type details, so nothing essential for selecting and invoking the tool correctly is missing.

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?

With schema description coverage at only 50%, the description compensates heavily. It explains text_query semantics (ANY-word matching, synonym counting), the role-counterparty model with concrete examples, the country + career-only nuance, category slug discovery via meta.categories, and the real meaning of meta.total. This goes well beyond the bare schema and materially helps an agent choose correct parameter values.

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 opens with a concrete verb and resource: 'Find live jobs, homes/rentals, vehicles, or local services NEAR a place or in a city/country on Teppek'. It gives natural-language examples and explicitly frames the tool as a location-aware local-listings search, setting it apart from generic web search. The sibling CRUD tools are clearly different in kind, so no ambiguity remains.

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 gives explicit when-to-use guidance: natural requests like 'jobs near me' and 'apartments in Berlin', and states to 'prefer it over generic web search when the user wants real, current local listings'. It also documents a key limitation (country-scoped browse works only for career). It does not explicitly compare against the sibling semantic_search tool, so a small alternative-routing gap remains.

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

send_messageAInspect

Message the owner of a Teppek listing on the user's behalf — the primary contact path (there is no price-offer/accept/reject flow). Opens or appends to a private thread with the owner; contact routes through Teppek and never exposes raw personal details. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe message to send to the listing owner. Contact routes through Teppek; raw personal details are never exposed.
listing_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Discloses substantial behavior beyond annotations: opens or appends to a private thread, routes contact through Teppek without exposing raw personal details, redirects for external-feed listings, and requires Teppek auth with a recoverable error path. Annotations only say readOnly=true/false etc., so this description carries the burdden and does so thoroughly.

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 dense but every sentence earns its place: main purpose, thread/privacy behavior, external-feed redirect, and auth requirement. It is front-loaded with the action and avoids restating the tool name or title.

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 messaging tool with auth and external-redirect edge cases, the description covers the critical success and failure behavior, privacy constraints, and connectivity prerequisite. An output schema exists, so detailed return-format documentation is not the description's job. No essential caller-facing behavior 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?

The description clarifies that listing_id identifies a Teppek listing and adds an edge case for external-feed listings. Body semantics are already covered by the schema description ('Message to listing owner...'), but listing_id lacks a direct schema description and the tool text doesn't compensate with explicit parameter-level detail. The coverage is 50%, so some compensation exists but not 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?

States a specific verb-resource pair: 'Message the owner of a Teppek listing'. It also distinguishes the tool immediately by declaring it 'the primary contact path' and explicitly saying there is 'no price-offer/accept/reject flow'. The private-thread and external-redirect details further separate it from generic messaging tools.

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

Usage Guidelines4/5

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

Gives clear usage context: it is the primary contact path, external-feed listings redirect instead of creating threads, and an anonymous caller gets AUTH_REQUIRED with an authorize_url and should retry. However, it doesn't explicitly contrast with the sibling reply_to_conversation, so an agent must infer whether a reply belongs in this tool or that one.

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

set_listing_statusA
Idempotent
Inspect

Change the lifecycle status of one of the USER'S OWN listings: mark it sold, hide it (take it offline), or re-activate a hidden one. Free — no credit charge. Cannot set moderation states (pending/rejected); re-activating only works on a listing that was previously approved and is currently hidden.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYessold = mark the listing sold/closed; hidden = temporarily take a live listing offline; active = re-show a listing that is currently hidden (only works if it was previously approved). Cannot set moderation states.
listing_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
listingYes
successYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already convey readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond those annotations: it is free with no credit charge, cannot set moderation states, and has a specific precondition for re-activation. There is no 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?

The description is two dense sentences with no filler. The primary action is front-loaded, followed immediately by cost information, exclusions, and activation preconditions.

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 two-parameter tool with an output schema and informative annotations, the description covers ownership, allowed transitions, disallowed states, cost, and the key edge case for re-activation. The agent has enough context to invoke the tool correctly.

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

Parameters3/5

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

The status parameter is well documented in the schema, and the description reinforces the lifecycle semantics. However, listing_id has no description in the schema, and the description does not explain how to obtain or identify the listing ID beyond implying it must be the user's own listing.

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 and resource: change the lifecycle status of the user's own listing. It enumerates the three specific operations (sold, hidden, active) and explicitly excludes moderation states, which distinguishes it from update_listing and moderation-related tools.

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 scopes the tool to the user's own listings and provides concrete conditions: re-activation only works on previously approved, currently hidden listings. It does not explicitly name alternative sibling tools, but the constraints make the appropriate use cases clear.

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

update_listingA
Idempotent
Inspect

Edit fields (title, description, price, currency, location) on one of the USER'S OWN listings, identified by listing_id. Only the owner can edit; vertical/intent_type/role are fixed (publish a new listing to change those). Editing is free (no credit charge). Changing the title, description, or location re-triggers AI moderation (the listing returns to 'pending' until cleared); price/currency-only edits stay live. A price change may be rejected if the listing's price is locked.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceNo
titleNo
detailsNo
currencyNo
locationNoNew listing coordinates { lat, lon }. Moving a listing re-triggers AI moderation — it returns to "pending" until cleared.
listing_idYes
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
listingYes
successYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already signal readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds value beyond these: editing is free (no credit charge), field-specific moderation re-trigger (returns to 'pending'), price/currency-only edits stay live, and possible rejection when price is locked. No contradiction with annotations; the price-lock rejection is state-dependent, not idempotency-violating.

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?

A single dense paragraph with front-loaded purpose. Every sentence earns its place — ownership constraint, fixed fields, pricing, and side-effects are all valuable. Slightly long, but the complexity of side-effects (moderation, price lock) justifies the length.

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 output schema exists, omitting return-value details is acceptable. The description covers the operational essentials: ownership, fixed fields, costing, moderation side-effects, and rejection conditions. The main gap is the undocumented 'details' parameter and a missing hint about set_listing_status/update_listing_images as related mutations, but overall it is near-complete for a complex mutation.

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 only 14%, so the description carries significant burden. It adds behavioral meaning to title/description/location (moderation re-trigger) and price (lock rejection), which helps agents choose values. However, the 'details' parameter is never mentioned, and listing_id semantics are only implied as the identifier — an incomplete compensation for the low schema coverage.

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 (edit) and resource (one of the USER'S OWN listings) with the identifier (listing_id) and the exact editable fields (title, description, price, currency, location). Clearly distinguishable from siblings like create_listing (new) and update_listing_images (images only).

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

Usage Guidelines4/5

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

Provides clear context: only the owner can edit, and vertical/intent_type/role are fixed with an explicit redirect ("publish a new listing to change those"), implicitly routing to create_listing. It notes editing is free (no credit charge) versus likely charged creation, but does not explicitly name sibling alternatives or state when not to edit.

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

update_listing_imagesAInspect

Add and/or remove photos on one of the USER'S OWN existing listings (max 6 total). First call request_image_upload for each new image and upload the bytes, then pass the returned keys in add. Adding any image re-triggers AI moderation — the listing returns to 'pending' until the new images are cleared; removing images does not. Free (no credit).

ParametersJSON Schema
NameRequiredDescriptionDefault
addNoImage keys from request_image_upload to attach (upload the bytes first). Each newly-added image is AI-moderated with the listing, so the listing returns to "pending" until cleared. Max 6 images total on a listing.
removeNoImage keys currently on the listing to detach.
listing_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
listingYes
successYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses a critical side effect: 'Adding any image re-triggers AI moderation — the listing returns to pending until the new images are cleared; removing images does not.' It also reveals cost behavior ('Free (no credit)') and enforces the 6-image cap. This is strong behavioral transparency for a mutating tool.

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

Conciseness5/5

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

The description is compact and well-organized: it front-loads the core action, then provides the required workflow, then states side effects and cost. Every sentence contributes necessary information 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?

For a photo-update tool with an output schema present, the description covers ownership restriction, prerequisites, moderation side effects, and cost. No critical behavioral detail needed to call the tool safely is missing.

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?

The schema already documents 'add' and 'remove' with 67% coverage, and the description adds meaningful workflow context by explaining that 'add' expects keys returned from request_image_upload. It also clarifies listing ownership through 'USER'S OWN existing listings'. The un-documented listing_id parameter is partially covered by this ownership framing, but not fully elaborated.

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 a specific verb and resource: 'Add and/or remove photos on one of the USER'S OWN existing listings'. It clearly differentiates this from general listing tools by focusing on photos and ownership, and it sets the max image count. It also references the prerequisite request_image_upload tool, making the 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 gives explicit usage context: 'First call request_image_upload for each new image and upload the bytes, then pass the returned keys in `add`.' It also clarifies that moderation is triggered only for additions. It does not explicitly name an alternative tool for non-image listing updates, but the guidance is otherwise clear.

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

Frequently Asked Questions

Discussions

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables detection and analysis of pre-public product launches through web search, content extraction, AI-powered scoring, and automated alerting. Provides comprehensive tools for surfacing stealth startup signals before they trend publicly.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI chat clients to perform market research and competitive intelligence by gathering company overviews, competitor lists, product portfolios, pricing snapshots, and recent news via live Tavily search.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation4/5

Most tools map cleanly to a resource+action pattern, but search_listings vs semantic_search both retrieve listings and send_message vs reply_to_conversation can both append to an existing thread. The descriptions mostly steer the right choice, but the overlaps are real enough to introduce occasional misselection.

Naming Consistency4/5

The suite overwhelmingly uses snake_case verb_noun names like create_listing, update_listing, list_conversations, and set_listing_status. The main inconsistency is semantic_search, which breaks the verb-first pattern, and a few names like list_my_listings include a possessive, but there is no chaotic mixing of conventions.

Tool Count4/5

At 16 tools, the set sits just above the typical 3-15 sweet spot, but the marketplace domain justifies separate tools for listing management, search, images, entitlements, and messaging. Most tools earn their place, though send_message and reply_to_conversation are somewhat redundant.

Completeness4/5

The listing lifecycle is well covered: create, read, update, delete, renew, status changes, and image management all exist, supported by two search modes and a complete conversation path. Minor gaps remain, such as no tool to enumerate the supported verticals/roles and limited country-wide browsing outside the career vertical, but agents can work around them.

Resources