Skip to main content
Glama

shopify_create_draft_order

DestructiveIdempotent

Create a Shopify draft order with custom line items and receive a payment link for online checkout. Use for services, custom quotes, or any sellable without a fixed product variant.

Instructions

Create a Shopify draft order and return its invoice_url — an instant payment link the customer can pay online. Use for services, custom quotes, or any sellable without a fixed product variant.

Args:
    line_items (required): JSON-string list of line items: [{variant_id?, title?, quantity, original_unit_price?, currency_code?, requires_shipping?, taxable?}]. Use variant_id for catalog products. Every custom line item requires title and a positive original_unit_price; use requires_shipping=false and taxable=false for non-taxable services. All priced lines must use one presentment currency.
    presentment_currency_code: Shopify CurrencyCode for the draft. When omitted for priced lines, the connected shop's currency is used.
    customer_id: Existing customer ID (numeric or GID) to attach.
    email: Customer email for the invoice (when no customer_id).
    note: Internal note on the draft order.
    project_id: Authenticated Project UUID.
    project_ref: Exact project correlation reference.
    connector_account_ref: Project-bound connector account alias.
    idempotency_key: Stable business-action identity.
    effect: Claimed read or write effect; Spring verifies it.
    approval_ref: Approved platform task UUID when resuming a write.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNo
emailNo
effectNo
line_itemsNo
project_idNo
customer_idNo
project_refNo
approval_refNo
idempotency_keyNo
connector_account_refNo
presentment_currency_codeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Addedv0.1.1

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already communicate read/write, idempotent, open-world, and destructive hints, and the description adds meaningful behavioral context beyond them: it returns a customer-payable invoice_url, requires one presentment currency for priced lines, and explains Spring's effect verification. No description statement directly contradicts the annotations.

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 core action and return value are front-loaded, and the parameter block is compact and scannable. The length is justified because the schema supplies no descriptions, though a single additional sentence naming sibling alternatives would improve it further.

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 an 11-parameter mutation tool with an empty schema, the description covers every parameter, marks line_items as required, explains currency and customer constraints, and identifies the main return value. Since an output schema exists, not detailing the full return envelope is acceptable; only the lack of explicit sibling routing and side-effect clarification keeps this from a 5.

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 0% schema description coverage, the description carries the full parameter-semantics burden and mostly succeeds: it defines the line_items JSON shape, required fields, currency fallback, customer_id-vs-email relationship, and all platform-level refs. One deduction is that line_items is described as a list of objects while the schema types it as an array of strings, creating a mild ambiguity.

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?

The first sentence states the exact action and resource ('Create a Shopify draft order') and the key return value ('invoice_url — an instant payment link'). The use-case sentence ('services, custom quotes, or any sellable without a fixed product variant') clearly distinguishes this from read-only Shopify tools and from invoice-sending tools.

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 description explicitly says when to use the tool: for services, custom quotes, or sellables without a fixed product variant. It also gives practical line-item construction rules, but it does not explicitly name or exclude sibling alternatives such as shopify_send_draft_order_invoice, so it stops short of full when-not-to-use routing.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RPasquale/lightbulb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server