Skip to main content
Glama

Server Details

AI-agent-first offers directory: search and publish listings via MCP.

Ownership verified
Status
Healthy
Uptime
7.3% over 33 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct role: create, update, delete, get by UUID, search with filters, and list categories. Search vs get-details is distinguishable by collection filtering versus single-offer UUID lookup.

Naming Consistency5/5

All names are snake_case and verb-first, following a predictable pattern. Plural nouns for collection operations (search_offers, list_categories) and singular for individual offer operations is a coherent convention.

Tool Count5/5

Six tools are well-scoped for an offer marketplace: full CRUD plus search and category lookup. No tool feels redundant or missing for the apparent core purpose.

Completeness4/5

Core offer lifecycle is covered: create, read, search, update, delete, and category lookup. Minor gap: search_offers only returns active offers and has no status filter, so archived/inactive offers are harder to discover without retaining UUIDs.

Available Tools

6 tools
create_offerCreate OfferAInspect

Create a new offer in the AnyGett database.

Requires a valid category_id from list_categories.

Returns: { status: "created", offer_id: "", created_by: "" }

SPECIFIC ATTRIBUTES by offer_type:

  • product: { condition: "new"|"used"|"refurbished", brand?, sku?, weight_kg?, shipping? }

  • service: { service_type: "design"|"development"|"consulting"|"marketing"|..., delivery_time_days?, revisions_included?, portfolio_url? }

  • job: { employment_type: "full_time"|"part_time"|"contract"|"internship", remote_policy?: "fully_remote"|"hybrid"|"office_only", requirements?: { skills: [] } }

  • resume: { desired_position?, skills?: { technical: [], soft: [] }, experience?: [], availability?: { status: "active_looking"|"passive" } }

GEO SCOPE examples:

  • Worldwide: { "type": "worldwide" }

  • Countries: { "type": "countries", "countries": ["US", "DE"], "description": "Ships to US and Germany" }

CONTACT METHOD example: { "email": "contact@example.com", "telegram": "@username", "preferred": "telegram" }

NameRequiredDescriptionDefault
urlNoExternal URL (product page, job posting, portfolio, etc.)
tagsNoDescriptive tags, e.g. ["design", "logo", "branding"]
titleYesOffer title (1–200 characters)
currencyNoISO 4217 currency code, 3 letters: "USD", "EUR", "GBP", "RUB", etc.USD
geo_scopeNoGeographic scope. Example: { "type": "worldwide" } or { "type": "countries", "countries": ["US"] }
price_maxNoMaximum price for price ranges. Must be >= price_min if both provided.
price_minNoPrice or minimum price (non-negative number)
expires_atNoOffer expiry date in ISO 8601 format, e.g. "2026-12-31T23:59:59Z"
offer_typeYesType of offer: "product" | "service" | "job" | "resume"
category_idYesCategory ID from list_categories. Call list_categories first to get valid values.
descriptionYesDetailed offer description (1–5000 characters)
contact_methodNoContact details for this offer
specific_attributesNoType-specific structured attributes. See tool description for fields by offer_type.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the write/idempotent/open-world profile, and the description adds a concrete return payload ({ status: "created", offer_id, created_by }) so the agent can confirm success. It does not warn about the practical consequence of idempotentHint=false — that a retried call creates a duplicate offer — nor about any permission requirements.

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?

Purpose, prerequisite, and return shape are front-loaded before the reference blocks, and the labeled sections make scanning easy. The type-attribute block is dense but every line carries binding information that is not available elsewhere.

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 13-parameter, nested-object creation tool with no output schema, the description covers the hard parts: the polymorphic attributes, geo and contact payload shapes, the category lookup prerequisite, and the creation response. Remaining fields (prices, tags, url, expires_at) are adequately documented in the schema itself.

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?

Although schema coverage is 100%, the schema leaves specific_attributes as an untyped additionalProperties object; the description fills that hole completely with per-offer_type field lists and enum values (condition, employment_type, remote_policy, availability.status). It also supplies concrete geo_scope and contact_method examples, adding substantial meaning beyond the schema.

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

Purpose4/5

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

States a specific verb and resource plus scope: 'Create a new offer in the AnyGett database,' immediately distinguishing it from the read/update/delete siblings. It does not explicitly contrast itself with update_offer or delete_offer, but the create-vs-modify boundary is unambiguous from the statement.

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?

'Requires a valid category_id from list_categories' is an explicit prerequisite plus a named sibling to call first, which is real routing guidance. It never states when NOT to use this tool (e.g. to modify an existing offer, use update_offer), so it stops short of full when/when-not coverage.

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

delete_offerDelete OfferA
Destructive
Inspect

Permanently delete an offer by UUID.

WARNING: This action is irreversible. The offer will be removed from the database entirely. Consider using update_offer with status: "archived" instead if you want to hide the offer without deleting it.

Returns { status: "deleted", offer_id: "" } on success. Returns error with code "NOT_FOUND" if the offer doesn't exist.

This permanently removes the offer. Prefer update_offer with status archived to hide without deleting.

NameRequiredDescriptionDefault
idYesUUID of the offer to permanently delete. Get from search_offers results.
confirmYesMust be exactly true to confirm deletion. Omitted or false is rejected.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description's job is to add context – it does so with the irreversibility warning, the specific NOT_FOUND error code, and the success return shape. It doesn't cover authorization requirements or whether deletion cascades to related entities, leaving a small gap.

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

Conciseness3/5

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

The critical warning is front-loaded, but the 'prefer update_offer with status archived' guidance is stated three separate times (WARNING paragraph, standalone repeat, and final sentence), which is redundant and dilutes rather than reinforces.

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?

There is no output schema, but the description supplies the exact success payload and the error code, and the confirm-flag safety mechanism is documented. Enough for an agent to call correctly and handle responses.

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% and the schema already documents both parameters (id is a UUID from search_offers, confirm must be exactly true). The description adds only 'by UUID' which the schema already conveys, so baseline 3 applies.

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 and resource with scope ('Permanently delete an offer by UUID'), and the alternative (update_offer with status archived) makes it clearly distinct from the sibling update_offer.

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 warns the action is irreversible and names the alternative (update_offer with status: archived) plus the condition under which to prefer it (hide without deleting). No inference required.

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

get_offer_detailsGet Offer DetailsA
Read-onlyIdempotent
Inspect

Get complete details of a specific offer by its UUID.

Returns a single offer object with all fields (including contact_method, specific_attributes, geo_scope). Returns an error object with code "NOT_FOUND" if the ID doesn't exist.

NameRequiredDescriptionDefault
idYesUUID of the offer, e.g. '550e8400-e29b-41d4-a716-446655440000'. Get UUIDs from search_offers results.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and open-world traits, so the description's most useful addition is the failure mode: a NOT_FOUND error object. It also enumerates notable returned fields (contact_method, specific_attributes, geo_scope), which helps the agent decide whether to call it at all, though it does not describe the full response shape.

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 short sentences, front-loaded with the core operation, then return shape, then error semantics. Nothing is padded and no sentence is wasted.

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?

With no output schema, the description must carry return-value information; it does so partially by listing representative fields and the NOT_FOUND error, which is likely enough for an agent to call correctly. A fuller indication of the response envelope would be needed for a 5.

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% and the single parameter already documents the UUID format and where to source IDs. The description's 'by its UUID' adds no meaning beyond the schema, so the baseline of 3 applies.

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 and resource ('Get complete details of a specific offer') plus the key qualifier 'by its UUID', which cleanly separates it from search_offers, list_categories, and the mutation siblings. An agent can identify the operation from the description alone.

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 'by its UUID' framing plus the field list implies this is the follow-up call once an ID is known, and the schema explicitly points to search_offers for obtaining UUIDs. However, the description itself never names the alternative or states an exclusion, so routing guidance is inferential rather than explicit.

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

list_categoriesList CategoriesA
Read-onlyIdempotent
Inspect

List all available offer categories with their IDs, slugs, and icons.

Returns category records used as category_id when creating offers. Each item includes: id, slug, name_en, icon, sort_order.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive, open-world operation. The description adds useful context by saying it returns all available categories and enumerating returned fields, which is important because there is no output schema; pagination or rate-limit behavior is not mentioned, but that is minor for a zero-parameter lookup.

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 short, front-loaded with the action, and then explains the return use and fields. There is minor overlap between the first sentence and the field list, but no filler or unnecessary complexity.

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 no parameters and annotations covering safety traits, the main missing structured information would be return values, which the description supplies as a field list. It also explains how the result is consumed by create_offer, so an agent has enough information to call it and use the output correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There are no parameter meanings for the description to clarify, and the empty schema is consistent with the description.

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 and resource: 'List all available offer categories'. It also clarifies the returned entity and fields, making it unambiguous against sibling tools that all operate on offers rather than categories.

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

Usage Guidelines4/5

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

Explicitly says the returned category records are used as category_id when creating offers, giving a clear use case and connecting it to create_offer. It does not state when not to use it or name alternatives, but no sibling category-listing tool exists.

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

search_offersSearch OffersA
Read-onlyIdempotent
Inspect

Search for active offers in the AnyGett database.

Returns a JSON array of matching offers with all fields parsed. Returns an empty array if no offers match.

FILTERS (all optional):

  • query: full-text search in title + description

  • offer_type: "product" | "service" | "job" | "resume"

  • category_id: get valid IDs from list_categories

  • price_min / price_max: filter by price range (uses price_min field of offers)

  • currency: ISO 4217 code, e.g. "USD", "EUR"

  • limit: 1–50 results (default 10)

NameRequiredDescriptionDefault
limitNoNumber of results to return (1–50, default 10)
queryNoKeyword to match offer title or description
currencyNoISO 4217 currency code, e.g. "USD", "EUR", "RUB"
price_maxNoMaximum price filter (inclusive, matches against offer's price_min)
price_minNoMinimum price filter (inclusive)
offer_typeNoFilter by offer type: "product" | "service" | "job" | "resume"
category_idNoCategory ID to filter by. Get valid IDs from list_categories tool first.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely useful behavior: returns a JSON array with all fields parsed, returns an empty array on no match, and notably that price_max filters against the offer's price_min field — a non-obvious semantic quirk disclosed in prose.

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-loaded with the one-line purpose, then return behavior, then a scannable FILTERS block. However, the entire bullet list duplicates fields already fully documented in the schema, so a meaningful fraction of the text does not earn its place.

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?

No output schema exists, and the description compensates by describing the return value (parsed JSON array, empty array on no match). What remains unstated is ordering of results and whether there is any total-count or pagination signal beyond limit — minor for a filter-list tool.

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 the schema already documents every parameter including defaults, ranges, and the enum. The description's filter list mostly restates the schema; the only added nuance (price_min matching) is also present in the schema's price_max description. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource plus scope: 'Search for active offers in the AnyGett database.' That distinguishes it from get_offer_details (single fetch) implicitly via the filter list, but it never explicitly contrasts with that sibling the way it names list_categories for category IDs.

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?

All filters are marked optional and a prerequisite is given ('get valid IDs from list_categories'), which tells the agent how to call it in a multi-step flow. It does not say when to prefer this over get_offer_details or when a search is unnecessary (e.g., already holding an offer ID).

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

update_offerUpdate OfferA
DestructiveIdempotent
Inspect

Partially update an existing offer by UUID.

Only the fields you provide are changed — omitted fields keep their current values. Returns { status: "updated", offer_id: "" } on success. Returns error with code "NOT_FOUND" if the offer doesn't exist.

COMMON USE CASES:

  • Archive an offer: { id: "...", status: "archived" }

  • Update price: { id: "...", price_min: 200 }

  • Refresh expiry: { id: "...", expires_at: "2027-01-01T00:00:00Z" }

  • Add tags: { id: "...", tags: ["new-tag"] }

Offer UUIDs come from search_offers or create_offer.

NameRequiredDescriptionDefault
idYesUUID of the offer to update. Get from search_offers results.
urlNo
tagsNoReplaces the entire tags array
titleNo
statusNo"active" (visible) | "archived" (hidden) | "draft" (not published)
currencyNo
geo_scopeNo
price_maxNo
price_minNo
expires_atNoISO 8601 expiry date. Set to null string to clear.
offer_typeNo
category_idNoNew category ID. Get valid IDs from list_categories.
descriptionNo
contact_methodNo
specific_attributesNoReplaces the entire specific_attributes object

TDQS

A4.6/5.0
Behavior4/5

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

Adds real context beyond the annotations: omitted fields retain current values, the success payload is { status: "updated", offer_id }, and a NOT_FOUND error code is disclosed. It does not cover permission requirements or whether dropped/replaced nested objects are recoverable, which matters given destructiveHint=true.

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?

Front-loads the verb, resource and partial-update semantics in the first two lines, then uses a scannable use-case block. Every line, including the UUID provenance note, carries information an agent needs.

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

Completeness4/5

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

For a 15-parameter mutation tool with nested objects and no output schema, the description supplies return shape, error code and update semantics — the critical omissions are filled. Still missing is guidance on how nested objects like geo_scope or contact_method are merged versus replaced.

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

Parameters4/5

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

With only 40% schema description coverage across 15 parameters, the description compensates by demonstrating field names and calling conventions (status, price_min, expires_at, tags) and by stating the partial-update rule. It leaves url, title, currency, geo_scope, contact_method and description undocumented, so it does not fully close the 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?

States a specific verb and resource with a precise modifier: "Partially update an existing offer by UUID." An agent can immediately separate this from create_offer (new), delete_offer (removal) and get_offer_details (read-only).

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

Usage Guidelines5/5

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

Provides four concrete invocation patterns (archive, price change, expiry refresh, tag addition) and names where the required UUID comes from: search_offers or create_offer. The archive example implicitly contrasts with the destructive hard-delete sibling, so an agent has a clear routing signal.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • First observedcreate_offer
    • First observeddelete_offer
    • First observedget_offer_details
    • First observedlist_categories
    • First observedsearch_offers
    • First observedupdate_offer

Publisher details

Operator
Not applicable
Operator website
Not applicable
Vendor relationship
Not applicable
Documentation
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources