Skip to main content
Glama

create_order

Destructive

Legacy auth-required tool, prefer the open UCP flow (create_cart → create_checkout → complete_checkout) which needs no credentials. Use create_order only if you hold a Bearer token and want a single-call path to a payment link. All item prices are re-verified server-side against the live pricing engine, agent-supplied prices are ignored. Returns a Yoco or Ozow payment_url.

Input Schema

NameRequiredDescriptionDefault
itemsYesArray of configured blind items
customer_cityNoDelivery city
customer_nameYesCustomer full name
customer_emailYesCustomer email address
customer_phoneYesCustomer phone number
payment_methodNoYoco card or Ozow instant EFTyoco
customer_addressNoDelivery address

Output Schema

NameRequiredDescriptionDefault
ap2No
itemsNo
statusYes
messageYes
currencyNo
customerNo
next_stepNo
total_zarNo
item_countNo
checkout_idYes
payment_urlYes
payment_methodNo
order_referenceYes
provider_referenceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / items / items / properties / no_drill
      Added value: +{
      +  "description": "Optional. true for the no-drill option (tension brackets, inside the frame, max 2000mm wide; 1500mm on 25mm venetians). Adds the R65 no-drill kit per blind. Offered on indoor roller blinds, including value rollers, and 25mm aluminium or aluwood venetians. Dedicated no-drill products already include the kit.",
      +  "type": "boolean"
      +}
  2. Changed13 schema fields changed
    • addedOutput schema / properties / ap2
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "merchant_authorization": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "merchant_authorization"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / checkout_id
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / contact
      Removed value: -{
      -  "additionalProperties": true,
      -  "properties": {
      -    "contact_name": {
      -      "type": "string"
      -    },
      -    "contact_phone": {
      -      "type": "string"
      -    },
      -    "email": {
      -      "type": "string"
      -    },
      -    "note": {
      -      "type": "string"
      -    },
      -    "whatsapp": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [],
      -  "type": "object"
      -}
    • addedOutput schema / properties / customer
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "address": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "city": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "email": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "phone": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [],
      +  "type": "object"
      +}
    • addedOutput schema / properties / items
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "colour": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "drop_mm": {
      +            "type": "number"
      +          },
      +          "mount_type": {
      +            "type": "string"
      +          },
      +          "product_name": {
      +            "type": "string"
      +          },
      +          "product_slug": {
      +            "type": "string"
      +          },
      +          "quantity": {
      +            "type": "number"
      +          },
      +          "total_price": {
      +            "type": "number"
      +          },
      +          "unit_price": {
      +            "type": "number"
      +          },
      +          "width_mm": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / next_step
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / order_id
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / order_reference
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / payment_method
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / provider_reference
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • removedOutput schema / properties / success
      Removed value: -{
      -  "type": "boolean"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "success",
      -  "order_id",
      -  "total_zar",
      -  "currency",
      -  "item_count",
      -  "payment_url",
      -  "message",
      -  "contact"
      -]New value: +[
      +  "order_reference",
      +  "checkout_id",
      +  "status",
      +  "payment_url",
      +  "message"
      +]
  3. Changed4 schema fields changed
    • changedInput schema / properties / items / items / required
      Previous value: -[
      -  "product_id",
      -  "width_mm",
      -  "height_mm",
      -  "colour",
      -  "mount_type",
      -  "unit_price_zar",
      -  "total_price_zar"
      -]New value: +[
      +  "product_id",
      +  "width_mm",
      +  "height_mm",
      +  "colour",
      +  "mount_type"
      +]
    • addedInput schema / properties / items / minItems
      Added value: +1
    • addedInput schema / properties / payment_method
      Added value: +{
      +  "default": "yoco",
      +  "description": "Yoco card or Ozow instant EFT",
      +  "enum": [
      +    "yoco",
      +    "ozow"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "contact": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "contact_name": {
      +          "type": "string"
      +        },
      +        "contact_phone": {
      +          "type": "string"
      +        },
      +        "email": {
      +          "type": "string"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "whatsapp": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [],
      +      "type": "object"
      +    },
      +    "currency": {
      +      "const": "ZAR",
      +      "type": "string"
      +    },
      +    "item_count": {
      +      "type": "number"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "order_id": {
      +      "type": "string"
      +    },
      +    "payment_url": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "success": {
      +      "type": "boolean"
      +    },
      +    "total_zar": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "success",
      +    "order_id",
      +    "total_zar",
      +    "currency",
      +    "item_count",
      +    "payment_url",
      +    "message",
      +    "contact"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing that this path requires a Bearer token and that all item prices are re-verified server-side so agent-supplied prices are ignored — a critical behavior for an LLM that might invent prices. It does not state idempotency or what happens to a partially-created order on failure, 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?

Three sentences, front-loaded with the routing decision, then the credential requirement, then the price-integrity caveat. No filler and the most decision-relevant information comes first.

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?

Covers routing, auth, price verification, and the return artifact; the output schema exists so return details needn't be spelled out. Minor gap: for a tool flagged destructiveHint=true, nothing is said about irreversibility or error handling once an order is placed.

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 coverage is 100%, so the baseline is 3, but the description adds real semantics the schema cannot: the unit_price_zar/total_price_zar fields the agent can supply are silently overridden by the pricing engine. It also names the payment_url return tied to the yoco/ozow enum.

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 ('create_order', single-call path to a payment link) and explicitly distinguishes itself from the sibling flow create_cart → create_checkout → complete_checkout. An agent can tell exactly which path this tool represents 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?

Gives an explicit when-not ('prefer the open UCP flow … which needs no credentials') and an explicit when ('only if you hold a Bearer token and want a single-call path'), naming the alternative chain. This is exactly the routing decision an agent needs.

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