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. 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"
      +]
  2. 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"
      +}
  3. 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 the Bearer-token auth requirement, that prices are re-verified server-side and agent-supplied prices are ignored, and what the response contains (payment_url). It does not elaborate on the destructive/mutating consequences flagged by destructiveHint=true (e.g. whether an order can be cancelled afterwards via cancel_cart), so a small gap remains.

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 tight sentences, front-loaded with the routing decision (legacy vs open flow) and followed by auth, pricing integrity, and return value. No sentence is redundant.

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?

An output schema exists and annotations carry the safety profile, so the description covers the remaining essentials: auth, the preferred alternative, and pricing behaviour. Only minor lifecycle details (what happens to the order if the payment link is abandoned, relation to cancel/ get_order) are absent.

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 already 100%, so the baseline is 3. The description adds real meaning beyond the schema by telling the agent that unit_price_zar/total_price_zar inputs are ignored in favour of the live pricing engine, which changes how the item parameters should be populated.

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 (create an order) and pins down the exact output: a single-call path to a Yoco or Ozow payment_url. It also positions itself against the multi-step siblings (create_cart → create_checkout → complete_checkout), so an agent can distinguish it without opening 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 Guidelines5/5

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

Explicit when-to-use and when-not-to-use: prefer the open UCP flow, use this one only if you hold a Bearer token and want a single-call path. The named alternative sequence is unambiguous.

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.