Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LULU_CLIENT_KEYYesClient key from Lulu's developer portal.
LULU_TIMEOUT_MSNoTimeout for each request to Lulu, in milliseconds.30000
LULU_ENVIRONMENTNoLulu environment to use. Valid values are `sandbox` or `production`.sandbox
LULU_CLIENT_SECRETYesClient secret from Lulu's developer portal.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Tools for the Lulu Print API (print-on-demand books). Connected to Lulu's SANDBOX environment. SANDBOX: orders are test orders and are never printed or charged. Products are identified by a pod_package_id SKU such as '0600X0900.BW.STD.PB.060UW444.MXX'. Usual order flow: calculate_cover_dimensions -> validate_interior_file / validate_cover_file (poll until done) -> get_shipping_options -> calculate_print_job_cost -> create_print_job -> get_print_job_status.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
calculate_print_job_costA

Price one or more books, including shipping and tax, without placing an order. Returns per-line-item costs, shipping cost, fees and totals.

list_print_jobsB

List Print-Jobs (orders), newest first by default, with optional filters and paging.

create_print_jobA

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.

reprint_print_jobA

Place a new order for books Lulu already has, using each line item's printable_id from an earlier Print-Job, so files don't need to be sent again. Same payment rules as create_print_job.

get_print_job_statisticsA

Count Print-Jobs in each status, optionally filtered by date, status or id.

get_print_jobA

Get one Print-Job with its line items, status, costs, shipping address and tracking.

get_print_job_costsA

Get the cost breakdown of an existing Print-Job: line items, shipping, fees, tax, totals. Lulu has no costs until it has processed the job's files, and answers 'No costs are available' before then.

get_print_job_statusA

Get only the current status of a Print-Job, with any status messages.

cancel_print_jobA

Cancel a Print-Job. Only possible before it goes to production (statuses CREATED, UNPAID or PRODUCTION_DELAYED). This cannot be undone.

get_shipping_optionsA

List the shipping levels available for some books to a destination, with price and delivery estimates. Only the country is required; a fuller address gives more accurate results.

create_webhookA

Subscribe a URL to Lulu events. Lulu then POSTs to the URL whenever a subscribed event happens, e.g. PRINT_JOB_STATUS_CHANGED when an order changes status.

list_webhooksA

List all webhook subscriptions on this Lulu account.

get_webhookC

Get one webhook subscription.

update_webhookB

Change a webhook's URL or topics, or switch it on or off.

delete_webhookB

Delete a webhook subscription. This cannot be undone.

test_webhookA

Ask Lulu to send a sample event of the given topic to a webhook's URL. The webhook must be active.

list_webhook_submissionsA

List past webhook deliveries and whether each one succeeded, for troubleshooting.

validate_interior_fileA

Start checking an interior PDF. Returns a validation record; poll get_interior_validation with its id until the status is VALIDATED, NORMALIZED or ERROR. With pod_package_id, Lulu also checks the file fits that product.

get_interior_validationB

Get the result of an interior file validation started with validate_interior_file.

calculate_cover_dimensionsA

Get the exact cover size (including spine and bleed) needed for a product and page count.

validate_cover_fileA

Start checking a cover PDF against a product and page count. Poll get_cover_validation with the returned id until the status is NORMALIZED or ERROR.

get_cover_validationA

Get the result of a cover file validation started with validate_cover_file.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have clearly distinct purposes, and the print-job lifecycle is well separated by action. There is some overlap between get_print_job and its narrower variants get_print_job_status and get_print_job_costs, as well as between calculate_print_job_cost and get_print_job_costs, but descriptions clarify the intended use.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern, such as get_print_job, create_print_job, validate_interior_file, and list_webhooks. There are no mixed conventions or vague standalone verbs.

Tool Count4/5

The 22 tools are reasonable for a multi-area API covering print jobs, file validation, pricing/shipping, and webhooks. The count is slightly heavy but each tool maps to a recognizable operation rather than being redundant.

Completeness4/5

The surface covers the core print-job lifecycle well: validation, cost calculation, creation, reprint, listing, status, costs, statistics, cancellation, and shipping options. Webhooks also have full CRUD plus testing and delivery history, though product/package discovery before using pod_package_id appears to be a minor gap.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues