Skip to main content
Glama

Create Offer

create_offer

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" }

Input Schema

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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources