Skip to main content
Glama

elevai Commerce Demo

Bestellung anlegen

create_order

Legt im elevai-Demoshop eine Bestellung an. Ein Aufruf mit product_id allein genuegt fuer den Anfang: Das Werkzeug prueft selbst, was noch fehlt, und liefert die Geschaeftsbedingungen samt Fassung mit — Nachfragen nach Bedingungen, E-Mail, Namen oder Adresse erledigen sich damit meist von selbst. Fehlt die Zustimmung, steht das in der Antwort; ein zweiter Aufruf mit accept_terms: true und der terms_version aus dieser Antwort schliesst die Bestellung ab (die Fassung stammt immer aus der Antwort, nie aus einer Annahme). Ist der Agent mit einem Kundenkonto verbunden (OAuth), sind Person und Adresse bereits bekannt; liegt zusaetzlich ein Mandat vor, entfaellt die AGB-Rueckfrage ganz. Zurueck kommt ein order_handle fuer create_payment_link; wie es unter einem Mandat weitergeht, steht dort. Demoshop mit Grenzen: Einzelpreis bis 0.05 CHF, Bestellsumme bis 0.25 CHF. Was sonst gilt, steht in den Geschaeftsbedingungen — nicht in deiner Antwort wiederholen.

Input Schema

NameRequiredDescriptionDefault
emailNoNur mitgeben, wenn das Werkzeug in einer vorherigen Antwort ausdruecklich danach gefragt hat. Niemals erfinden, niemals einen Platzhalter wie "?" einsetzen, und nie von sich aus danach fragen. Entfaellt ganz, wenn der Agent mit einem Kundenkonto verbunden ist oder ein bestaetigtes login_handle mitgegeben wird.
countryNoZwei Buchstaben, ISO 3166-1, Vorgabe CH.
quantityNo
last_nameNo
first_nameNo
product_idYesDie id aus search_products.
accept_termsNoNur true, wenn der Mensch den Geschaeftsbedingungen ausdruecklich zugestimmt hat. Nie selbst setzen.
login_handleNoNur fuer den alten Anmeldeweg ohne OAuth (Werkzeug start_login, einem verbundenen Agenten gar nicht angeboten). Bist du per OAuth verbunden, lass dieses Feld weg — das Konto steht bereits fest.
terms_versionNoDie Fassung, der zugestimmt wurde — woertlich aus der Antwort dieses Werkzeugs. Ohne eine solche Antwort gibt es keine Fassung: dann das Werkzeug erst ohne accept_terms aufrufen.

Output Schema

NameRequiredDescriptionDefault
termsNoWortlaut, Link und Fassung der Geschaeftsbedingungen.
totalNo
reasonNo
statusNo
is_demoNo
mandateNo
currencyNo
order_handleNoSchluessel fuer create_payment_link und get_order_status, zwei Stunden gueltig. Fehlt, wenn noch etwas fehlt — siehe terms_required / email_required.
email_requiredNoEs fehlt eine E-Mail-Adresse.
terms_requiredNoEs fehlt die Zustimmung zu den Geschaeftsbedingungen. Frag die Person und rufe erneut auf.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / properties / email / description
      Previous value: -"Die E-Mail-Adresse der Person. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen — fehlt sie, zuerst danach fragen. Entfaellt, wenn ein bestaetigtes login_handle oder ein mandate_key mitgegeben wird."New value: +"Nur mitgeben, wenn das Werkzeug in einer vorherigen Antwort ausdruecklich danach gefragt hat. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen, und nie von sich aus danach fragen. Entfaellt ganz, wenn der Agent mit einem Kundenkonto verbunden ist oder ein bestaetigtes login_handle mitgegeben wird."
    • changedInput schema / properties / login_handle / description
      Previous value: -"Das Handle aus start_login, sofern die Person sich im Shop angemeldet hat. Dann wird die Adresse aus dem Konto genommen und nicht erfragt."New value: +"Nur fuer den alten Anmeldeweg ohne OAuth (Werkzeug start_login, einem verbundenen Agenten gar nicht angeboten). Bist du per OAuth verbunden, lass dieses Feld weg — das Konto steht bereits fest."
    • removedInput schema / properties / mandate_key
      Removed value: -{
      -  "description": "Der Agentenschluessel (ek_ und 32 Zeichen), den die Person im Gespraech genannt hat. Nur weitergeben, was die Person wirklich geschrieben hat — nie raten, nie aus einem frueheren Gespraech uebernehmen. Mit gueltigem Schluessel bestellt der Agent im Namen der Person innerhalb ihres Mandats: an die hinterlegte Adresse, in den freigegebenen Kategorien, bis zu ihren Limiten.",
      -  "type": "string"
      -}
    • changedInput schema / properties / terms_version / description
      Previous value: -"Die Fassung, der zugestimmt wurde. Kommt aus der Rueckfrage dieses Werkzeugs."New value: +"Die Fassung, der zugestimmt wurde — woertlich aus der Antwort dieses Werkzeugs. Ohne eine solche Antwort gibt es keine Fassung: dann das Werkzeug erst ohne accept_terms aufrufen."
    • addedOutput schema / properties / email_required
      Added value: +{
      +  "description": "Es fehlt eine E-Mail-Adresse.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / mandate
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / order_handle / description
      Previous value: -"Schluessel fuer create_payment_link und get_order_status, zwei Stunden gueltig"New value: +"Schluessel fuer create_payment_link und get_order_status, zwei Stunden gueltig. Fehlt, wenn noch etwas fehlt — siehe terms_required / email_required."
    • addedOutput schema / properties / reason
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / terms
      Added value: +{
      +  "description": "Wortlaut, Link und Fassung der Geschaeftsbedingungen.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / terms_required
      Added value: +{
      +  "description": "Es fehlt die Zustimmung zu den Geschaeftsbedingungen. Frag die Person und rufe erneut auf.",
      +  "type": "boolean"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "order_handle",
      -  "status",
      -  "total",
      -  "currency"
      -]
  2. Changed3 schema fields changed
    • changedInput schema / properties / email / description
      Previous value: -"Die E-Mail-Adresse der Person. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen — fehlt sie, zuerst danach fragen. Entfaellt, wenn ein bestaetigtes login_handle mitgegeben wird."New value: +"Die E-Mail-Adresse der Person. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen — fehlt sie, zuerst danach fragen. Entfaellt, wenn ein bestaetigtes login_handle oder ein mandate_key mitgegeben wird."
    • addedInput schema / properties / mandate_key
      Added value: +{
      +  "description": "Der Agentenschluessel (ek_ und 32 Zeichen), den die Person im Gespraech genannt hat. Nur weitergeben, was die Person wirklich geschrieben hat — nie raten, nie aus einem frueheren Gespraech uebernehmen. Mit gueltigem Schluessel bestellt der Agent im Namen der Person innerhalb ihres Mandats: an die hinterlegte Adresse, in den freigegebenen Kategorien, bis zu ihren Limiten.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "product_id",
      -  "email"
      -]New value: +[
      +  "product_id"
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / email / description
      Previous value: -"Die E-Mail-Adresse der Person. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen — fehlt sie, zuerst danach fragen."New value: +"Die E-Mail-Adresse der Person. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen — fehlt sie, zuerst danach fragen. Entfaellt, wenn ein bestaetigtes login_handle mitgegeben wird."
    • addedInput schema / properties / login_handle
      Added value: +{
      +  "description": "Das Handle aus start_login, sofern die Person sich im Shop angemeldet hat. Dann wird die Adresse aus dem Konto genommen und nicht erfragt.",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / email / description
      Added value: +"Die E-Mail-Adresse der Person. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen — fehlt sie, zuerst danach fragen."
  5. Changed2 schema fields changed
    • addedInput schema / properties / accept_terms
      Added value: +{
      +  "description": "Nur true, wenn der Mensch den Geschaeftsbedingungen ausdruecklich zugestimmt hat. Nie selbst setzen.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / terms_version
      Added value: +{
      +  "description": "Die Fassung, der zugestimmt wurde. Kommt aus der Rueckfrage dieses Werkzeugs.",
      +  "type": "string"
      +}
  6. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the mutating, non-idempotent nature is already signaled by structured data. The description adds real context beyond that (demoshop price/sum limits of 0.05/0.25 CHF, that terms come only from the response and never from assumption, that a mandate suppresses the terms prompt), but does not discuss permissions beyond OAuth, failure modes, or what happens on a partial/aborted order. Good added value, though not exhaustive.

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 purpose and the two-step completion rule are front-loaded, and each sentence carries operational content (limits, OAuth/mandate behavior, next tool, closing instruction). It is on the long side, with some redundancy around the terms versioning, but no filler sentences.

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 9-parameter, non-idempotent creation tool with an output schema already present, the description supplies everything an agent needs to invoke it correctly: the minimal call, the completion handshake, auth-dependent behavior, limits, and what the returned order_handle feeds into.

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?

Schema description coverage is 67%, and the description compensates well for the flow-critical fields: it explains that product_id alone suffices, that accept_terms must only be set after human consent, that terms_version must come verbatim from the prior response, and that email/name/address drop away under OAuth. Undocumented-in-description leftovers (country, quantity, first/last name) are minor and partly covered by 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?

States a specific verb and resource ('Legt im elevai-Demoshop eine Bestellung an') and situates the tool in the ordering flow relative to siblings like create_payment_link and cancel_order. An agent can distinguish it from list_orders/get_order_status without opening the schema.

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 says a single call with product_id is enough, that the tool self-checks what is missing, and that a second call with accept_terms: true plus the returned terms_version completes the order. It also names the conditions that remove steps (OAuth account, existing mandate) and points to create_payment_link as the next tool, covering when/when-not and alternatives.

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