Skip to main content
Glama

Server Details

Print-on-demand for agents: upload a PDF, get a printed book delivered in India.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 7 of 7 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct resource and action: catalog browsing, PDF upload, validation, order creation, retrieval, cancellation, and enterprise application. There is no overlap or confusion between tools.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (apply_enterprise, cancel_order, create_order, create_upload, get_catalog, get_order, validate_pdf). Verbs are clear and nouns are specific.

Tool Count5/5

Seven tools is well-scoped for a print ordering server. Each tool serves a necessary step in the workflow, and the count is neither too sparse nor bloated.

Completeness4/5

The core workflow (catalog, upload, validate, create, track, cancel order) is fully covered. Minor gaps exist, such as no way to check enterprise application status or manage uploads, but these are edge cases and do not break the primary use case.

Available Tools

7 tools
apply_enterpriseAInspect

Apply for an enterprise (invoiced) account — for platforms printing at volume behind their own checkout. Enterprise orders auto-confirm with no payment link, are priced at a platform discount off retail (default 25% below), and are settled monthly. Requires a valid India GSTIN for tax invoicing. This does NOT issue a key immediately: the application is reviewed and, once approved, an API key is emailed to contact_email. Use this only when a human has asked to set up a business/enterprise print account.

ParametersJSON Schema
NameRequiredDescriptionDefault
gstinYes15-character India GSTIN, e.g. 29ABCDE1234F1Z5. Required for GST invoicing.
notesNoAnything else for the reviewer (optional).
company_nameYesRegistered business name.
contact_emailYesWhere the approved API key and invoices are sent.
expected_monthly_volumeNoApproximate books printed per month (optional).
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that no key is issued immediately, the application is reviewed, and the key is emailed to contact_email. It also discloses the invoicing model (GSTIN required, default 25% discount, monthly settlement). While it doesn't cover failure modes or review timelines, it provides substantial behavioral context.

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 description is a moderately sized paragraph that front-loads the core purpose and then explains key behaviors and usage restrictions. Every sentence contributes useful context, though it could be slightly more streamlined without losing meaning.

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?

The description covers the application flow, requirements, pricing model, and usage guidance. It lacks information about review timelines, rejection reasons, or post-approval steps beyond emailing the key, but given the complexity of an enterprise application and the absence of an output schema, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds some context around why GSTIN is required and how contact_email is used, but these are largely restatements of the schema descriptions. It doesn't enrich parameter semantics beyond what the schema already provides.

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 description opens with a specific verb+resource ('Apply for an enterprise (invoiced) account') and immediately distinguishes this from order creation by describing the target user: 'platforms printing at volume behind their own checkout.' It also contrasts with sibling tools like create_order by clarifying this is for account setup, not order placement.

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 provides a usage gate: 'Use this only when a human has asked to set up a business/enterprise print account.' It also describes when this tool is appropriate (volume printing, own checkout) and what it does differently from standard order tools (auto-confirm, no payment link, monthly settlement), guiding selection among siblings.

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

cancel_orderAInspect

Cancel an order. Only possible while status is awaiting_payment (i.e. before payment). Paid orders are handled manually — contact support (see get_catalog).

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
order_tokenYes
Behavior4/5

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

No annotations exist, so the description must disclose behavioral traits. It does so by explaining the status restriction and the manual handling for paid orders. It stops short of describing cancellation effects (e.g., irreversibility, confirmation), but the key behavioral constraint is well covered.

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?

Two sentences, front-loaded with the core purpose, followed by condition and alternative. Every sentence earns its place; there is zero redundancy.

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 simple cancellation tool with two string parameters and no output schema, the description covers the primary context well: what, when, and the alternative. It lacks return-value or failure-mode details, but those are not critical for this tool's simple contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the parameters (order_id, order_token) at all. The names are somewhat self-explanatory, but the description provides no additional context about the token's provenance or format, so it fails to compensate for the lack of schema descriptions.

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 description clearly states the tool cancels an order, with a specific verb and resource. It also distinguishes itself from siblings by specifying the condition (awaiting_payment status), which differentiates it from other order-related tools like create_order and get_order.

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 states when the tool is usable (only during awaiting_payment) and provides a clear alternative for paid orders (manual handling, contact support via get_catalog). This gives the agent explicit when-to-use and when-not-to-use guidance.

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

create_orderAInspect

Create a print order for a validated upload. Validates everything BEFORE any payment link is minted. Returns { order, order_token } — the order object has order_id, status, amount, and payment_url (the Razorpay link, present while awaiting_payment). Give payment_url to the human to pay (UPI/cards/netbanking). SAVE order_token — it is shown only once and is required for get_order and cancel_order. The order confirms automatically after payment; unpaid orders expire after 72 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesBuyer email; receives the Razorpay payment notification.
copiesNo
formatYespaperback/hardcover: bound storybook (20-60 page PDF). sticker-a3: single-sheet A3 portrait sticker / wall chart (exactly 1 page, 842×1191 pt).
addressYesIndia shipping address (V1 ships within India only).
upload_idYesupload_id of a PDF that passed validation.
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses that validation occurs before payment link minting, the order_token is shown only once, the order auto-confirms after payment, and unpaid orders expire after 72 hours. This significantly exceeds basic expectations.

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?

The description is six sentences, all dense with relevant information. It front-loads the core purpose, then efficiently covers return shape, payment URL, token handling, and expiration. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description fully explains the return object, payment flow, token usage, and expiry behavior. It integrates well with sibling tools by noting that order_token is needed for get_order and cancel_order, providing a complete picture of the order lifecycle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80% (4 of 5 parameters have descriptions), so the schema already documents most parameters. The description adds little parameter-specific detail beyond the precondition of a 'validated upload,' which is not about parameter semantics. Thus, a baseline score of 3 is appropriate.

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 description clearly identifies the tool as 'Create a print order for a validated upload,' using a specific verb and resource. It distinguishes itself from siblings like get_order and cancel_order by describing the creation flow and prerequisite (validated upload), making its purpose unambiguous.

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 usage context is clear through references to 'validated upload' as a prerequisite and the note that order_token is required for get_order and cancel_order, implying a sequence. However, it lacks explicit 'when not to use' exclusions, though the context makes alternatives apparent.

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

create_uploadAInspect

Start a PDF upload. Returns {upload_id, put_url, expires_at, max_bytes}. HTTP PUT the raw PDF bytes to put_url (Content-Type: application/pdf, no auth needed — the URL is signed). The PUT response includes the validation report. Then pass upload_id to create_order. Keyless use is bounded per calling origin: 20 create_upload calls per hour, at most 5 unused uploads open at a time, and put_url expires in 2 hours — so PUT the bytes promptly and reuse an upload_id you already hold instead of creating extras. An API key (see apply_enterprise) lifts both limits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

With no annotations, the description carries full burden and exceeds expectations. It discloses the return fields, the need for HTTP PUT with specific Content-Type, that the URL is signed and needs no auth, that the PUT response contains the validation report, and detailed rate limits (20/hour, 5 open, 2-hour expiry). It also advises to reuse upload_id, which is essential behavioral context.

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?

Every sentence adds value: the first states the purpose and return, the second describes the follow-up action, and the third provides critical usage limits and advice. The description is dense but well-structured, with no filler or redundant information. It is front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema or annotations, the description fully covers the tool's behavior, return value, next steps, and constraints. It even explains the validation report in the PUT response and how API keys affect limits. This is complete for a tool with this complexity.

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?

The tool has zero parameters, so the baseline is 4. The description adds meaningful semantic context about what the tool produces and how to use the result, which compensates for the absence of parameters. It does not describe any parameter constraints because there are none, making the score appropriate.

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 description opens with a specific verb and resource: 'Start a PDF upload.' It clearly defines the tool's role as the initial step in the upload workflow, distinguishing it from siblings like create_order (which uses the upload_id) and validate_pdf. The purpose is unambiguous.

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 provides clear workflow context: HTTP PUT to put_url, then pass upload_id to create_order. It also gives practical guidance on rate limits and reusing upload IDs. However, it does not explicitly mention when NOT to use this tool or compare it to alternatives (e.g., validate_pdf), so it stops short of a 5.

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

get_catalogAInspect

List what can be printed: SKUs (storybook books, sticker-a3 wall charts), formats, supported trim sizes, page-count limits, prices (INR, shipping included), and shipping coverage (India only). Call this first to quote a price or check whether a PDF will be accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the exact types of information returned (SKUs, formats, sizes, limits, prices, shipping) and implies a read-only listing operation. It doesn't mention response format or error behavior, but for a zero-parameter catalog tool, this is largely sufficient.

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?

The description is two sentences, front-loaded with the core purpose ('List what can be printed') followed by a concise enumeration of content and an immediate usage directive. Every sentence earns its place with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero parameters, no output schema), the description is fully complete. It specifies all domains of catalog data and even includes a usage trigger, so an agent can confidently select and invoke this tool without further clarification.

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?

The tool has zero parameters and the input schema is empty, so there are no parameter semantics to clarify. The description adds all available meaning about the tool's behavior, meeting the baseline for zero-parameter tools.

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 description clearly states the resource (printable items/catalog) and the action (list), enumerating specific content like SKUs, formats, trim sizes, page-count limits, prices, and shipping coverage. It is distinct from sibling tools such as create_order or validate_pdf, which perform different operations.

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?

The description gives explicit when-to-use guidance: 'Call this first to quote a price or check whether a PDF will be accepted.' This establishes the tool as a prerequisite for pricing and PDF acceptance checks, making the intended usage context unmistakable.

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

get_orderAInspect

Check an order: status (awaiting_payment → confirmed → printing → shipped → delivered), tracking number once shipped, and — while unpaid — the payment_url again (so you can always re-answer "how do I pay"). Requires the order_token from create_order.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
order_tokenYesThe token returned once by create_order.
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the conditional behavior (payment_url only when unpaid), the status flow, and the prerequisite token. It implies a read-only operation via 'check', but does not explicitly state side effects or error behavior, so a 4 is appropriate.

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?

The description is a single, front-loaded sentence that packs essential info (what it returns, conditional logic, prerequisite) without waste. Every clause earns its place.

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?

Without an output schema, the description should explain return values. It does so by listing status, tracking number, and payment_url. It also covers the prerequisite and conditional behavior. Missing details like error responses are not critical for this simple tool, so a 4 is suitable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes order_token, and the description repeats that relationship. The order_id parameter is not described in schema or description, but 'check an order' implies it. The description adds little beyond what the schema provides, especially since schema coverage is 50%. A baseline 3 is fair.

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 description clearly states the tool checks an order, with a specific verb 'check' and resource 'order'. It lists the specific fields returned (status, tracking number, payment_url) and distinguishes from sibling tools like create_order and cancel_order by focusing on read-only retrieval.

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 implies when to use the tool: after creating an order (requires order_token from create_order). It also provides a use case (re-answering 'how do I pay'). However, it does not explicitly state when not to use it or name alternative tools, so it misses the top bar.

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

validate_pdfAInspect

Get the print-validation report for an uploaded PDF before paying: page count, trim size, hard errors (blocking) and soft warnings (non-blocking). Every error includes a resolution explaining how to fix it. Free to call; use it to check printability before create_order.

ParametersJSON Schema
NameRequiredDescriptionDefault
upload_idYesThe upload_id returned by create_upload.
Behavior5/5

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

With no annotations, the description fully discloses key behavioral traits: it is a read-only report, free, and distinguishes blocking errors (hard) from non-blocking (soft). Also reveals that errors include a resolution field, which is not obvious.

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?

Two sentences, front-loaded with purpose, and every clause adds value (contents, blocking nature, cost, usage timing). No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is complete: it states what the report contains, the meaning of errors, and when to call it. No critical gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter upload_id, already describing it as returned by create_upload. The description adds no parameter-specific semantics beyond mentioning 'uploaded PDF', so baseline 3 is appropriate.

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 ('Get') and resource ('print-validation report for an uploaded PDF'), and enumerates report contents (page count, trim size, hard errors, soft warnings). Clearly distinct from siblings like create_order or get_order by positioning it as a pre-payment check.

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 says to use it 'before paying' and 'to check printability before create_order', giving clear temporal and contextual guidance. Also notes it is 'Free to call', informing cost/usage decisions.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides integration with Lulu Print API for print-on-demand services through Claude Desktop and other MCP clients, enabling users to create and manage print jobs, validate files, calculate costs, and handle shipping for books and printed materials.
    Last updated
    2
    8
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enterprise-grade PDF engine for AI agents. Pure TypeScript, zero-dependency, and local-first. Allows agents to generate ISO-compliant PDF/A documents, handle digital signatures (PKCS#7), and process high-performance layouts (800+ pages in seconds).
    Last updated
    24
    337
    2
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources