Skip to main content
Glama

Create print job (place an order)

create_print_job

Place a real print-and-ship order for books from interior and cover PDF URLs, left unpaid until you pay or cancel it in Lulu's portal. Validate files and check costs first.

Instructions

Place an order to print and ship books from interior and cover PDF URLs. In production this is a real order: it stays UNPAID until paid in Lulu's developer portal, or is charged automatically if a card is on file. Check the price with calculate_print_job_cost and the files with validate_interior_file / validate_cover_file first. Set production_delay to leave time to cancel.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "contact_email": "<contact_email>",
      "shipping_level": "<shipping_level>",
      "shipping_address": "<shipping_address>",
      "line_items": "<line_items>"
    },
    "name": "create_print_job"
  }
}

Input Schema

NameRequiredDescriptionDefault
line_itemsYes
external_idNoYour own order number or reference.
contact_emailYesEmail Lulu uses for questions about this Print-Job.
shipping_levelYesShipping service level, from slowest/cheapest (MAIL) to fastest (EXPRESS).
production_delayNoMinutes (60 to 2880) to wait before production starts, leaving time to cancel.
shipping_addressYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the highest-stakes behavior: this is a real order that 'stays UNPAID until paid in Lulu's developer portal, or is charged automatically if a card is on file.' That financial consequence and the cancel-window mechanic are not derivable from readOnlyHint/destructiveHint alone.

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 tightly packed sentences, zero filler. The highest-stakes fact (real order, possible charge) is in sentence two where it belongs, and the pre-flight checklist follows immediately.

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 a nested, 6-parameter, non-idempotent creation tool this covers the decision-critical ground: cost, charge timing, file validation, and cancellation. The one omission is that no output schema exists and the description never says what comes back (a print job id/status), which an agent needs to chain into get_print_job or cancel_print_job.

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 67% and already documents pod_package_id, source_url, md5 and shipping_level well. The description still adds real meaning by framing production_delay as a cancellation buffer rather than just a minute count, but it says nothing about line_items structure, external_id, or contact_email semantics.

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 ('Place an order to print and ship books') plus the input source ('interior and cover PDF URLs'). It is unmistakably distinct from sibling reads like get_print_job and from cost-only helpers like calculate_print_job_cost.

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 names the prerequisite tools to run first ('Check the price with calculate_print_job_cost and the files with validate_interior_file / validate_cover_file first') and gives a concrete tactic ('Set production_delay to leave time to cancel'). An agent knows both the preconditions and a reversible-usage pattern without inferring anything.

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