Have It Printed
Server Details
Print and mail physical documents in the US via USPS, with quotes, agent payment and tracking.
- Status
- Healthy
- Uptime
- 99.3% over 64 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 14 tools
Most tools have clearly distinct roles across catalog, job setup, pricing, payment, and order tracking. The main ambiguity is between hip_quote and hip_prepare_payment, and somewhat between hip_update_job and the content-specific set/add tools, but the descriptions clarify the intended use.
All tools use the same hip_ prefix with lowercase snake_case and action-oriented names. The pattern is predictable, including verbs like add, create, get, set, update, prepare, and complete.
Fourteen tools is within the typical well-scoped range for a print-and-mail workflow. Each tool maps to a meaningful step: catalog lookup, job creation, content setup, pricing, payment, checkout, and order status.
The surface covers the core lifecycle from service discovery and job creation through document setup, quoting, payment, checkout, and order tracking. Minor gaps exist around retrieving a job's current state, cancelling a job, or listing jobs, but the main workflows are supported.
Available Tools
14 toolship_add_text_documentAdd a written documentAInspect
Add a letter or document whose text you wrote with the person. Have It Printed typesets it on US Letter paper in a clean serif font, in black and white, and counts its pages. Plain text only: separate paragraphs with a blank line; no images, tables or formatting. Call once per document.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | the full text to print, exactly as it should read | |
| title | Yes | a short name for the document; it names the file and is not printed | |
| copies | No | copies (default 1) | |
| job_handle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-idempotent write, but the description adds real behavioral context beyond them: how output is rendered (US Letter, serif, black and white), that page count is computed, and hard input constraints (plain text only, blank-line paragraph separation). This meaningfully exceeds the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then packs rendering behavior and input constraints into three tight sentences with no filler. Slightly awkward phrasing ('Have It Printed typesets it') but structurally sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers rendering, formatting constraints, and page counting, but leaves gaps for a tool with no output schema: it doesn't state what is returned or explain the required job_handle's origin (presumably from hip_create_job). Adequate but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with text/title/copies documented in the schema. The description adds value by specifying the required text format ('separate paragraphs with a blank line; no images, tables or formatting'), which goes beyond the schema's 'exactly as it should read'. job_handle remains undocumented in both places, capping the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a letter or document whose text you wrote') and clarifies that the text is authored by the user, distinguishing it from upload-style siblings. It does not explicitly name how it differs from other hip_* tools, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete usage rule ('Call once per document'), which implies the tool is invoked repeatedly for multi-document jobs. However, it never says when to use this versus alternatives (e.g., uploading a file) or where the required job_handle comes from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_complete_paymentPay and send to printADestructiveInspect
Pay for the job with a delegated payment authorization, with no browser and no human step. payment_authorization must be a Stripe shared payment token (spt_...) granted to Have It Printed whose maximum is at least the total from hip_prepare_payment; HIP charges exactly that total and never more. NEVER send a card number, expiry, CVV or any reusable credential to this tool. If the cardholder's bank requires authentication, this returns payment_status=requires_user_action rather than bypassing it.
| Name | Required | Description | Default |
|---|---|---|---|
| job_handle | Yes | ||
| payment_authorization | Yes | opaque delegated payment token (spt_...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavioral context beyond the annotations: exact charge semantics ('charges exactly that total and never more'), the security constraint ('NEVER send a card number, expiry, CVV or any reusable credential'), and the failure mode ('returns payment_status=requires_user_action rather than bypassing' authentication). This goes well past destructiveHint/idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, all front-loaded and earning their place: purpose, token requirement, security prohibition, edge case. Slightly dense, but no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param mutation tool with no output schema, the description covers the money-flow contract, token requirements, credential prohibition, and the requires_user_action outcome. It omits what job_handle is beyond the name and doesn't state idempotency/retry behavior, both of which matter for a non-idempotent, destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (job_handle has no description), but the description compensates by fully qualifying payment_authorization: format (spt_...), issuance constraint (granted to Have It Printed), and range constraint (max ≥ total). job_handle remains undocumented anywhere, so not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('pay for the job') with the mechanism ('delegated payment authorization, no browser, no human step'), which distinguishes it from siblings like hip_prepare_payment (prepares total) and hip_create_checkout (browser checkout). An agent can route correctly from the first sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear precondition (token must be an spt_ granted to Have It Printed with a max at least the total from hip_prepare_payment) and a natural pairing with hip_prepare_payment. It doesn't explicitly say when NOT to use this vs. hip_create_checkout, but the 'no browser, no human step' framing implies the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_create_checkoutCreate a checkout linkAInspect
Create a Stripe Checkout session for the job and return its URL. This does NOT take payment: the customer completes payment at that URL. Show them the quote first.
| Name | Required | Description | Default |
|---|---|---|---|
| job_handle | Yes | ||
| customer_email | No | for the receipt and tracking email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare it's a non-read-only, open-world, non-idempotent operation, but the description adds the crucial behavioral fact that 'This does NOT take payment: the customer completes payment at that URL' – a non-obvious side effect that prevents misoperation. It also confirms return type (URL).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and result, followed by the key non-obvious caveat and the workflow reminder. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the action, side effect, return value, and a workflow prerequisite. Missing explicit mention of authorization or rate limits, but for a non-destructive creation tool with sibling context, it's nearly complete. A minor gap on how errors or existing sessions are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with customer_email already described in the schema. The description doesn't elaborate on job_handle format or customer_email usage beyond what's in the schema. Baseline 3 given partial coverage and no added param detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create), resource (Stripe Checkout session), and return value (URL), plus scopes it to a job. Distinguishes from siblings like hip_get_checkout_status and hip_complete_payment by nailing the exact action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly establishes when to use it (create a checkout session for a job) and adds a workflow constraint ('Show them the quote first'), implying hip_quote should precede this. Doesn't explicitly name hip_quote or when-not-to-use cases, but the implied sequencing is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_create_jobStart a print-and-mail jobAInspect
Start a print-and-mail job. Returns an opaque job_handle used by every later call. Creates nothing chargeable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, non-idempotent), and the description adds two non-obvious facts: the return value is an opaque handle used by every later call, and the call creates nothing chargeable. It does not say whether repeated calls produce distinct jobs, which matters given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the return contract, then the billing caveat. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a zero-param starter tool: action, output handle, and the no-charge guarantee are all present, and safety is carried by annotations. It leaves the handoff to sibling tools implicit, which is a minor gap in a 10-tool checkout/job workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description correctly implies all configuration happens elsewhere (via the returned handle path), adding meaning about where state lives, though it could name the follow-up tool that supplies job details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Start a print-and-mail job'), and the title mirrors it. Distinguished from siblings like hip_quote and hip_update_job by the explicit 'start' action and the returned job handle that threads into later calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the workflow (start a job, then use the returned handle with hip_update_job / hip_complete_payment), but the description never names an alternative or states when not to call this tool. An agent must infer ordering from the sibling list rather than the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_get_catalogLetter and postcard optionsARead-onlyIdempotentInspect
The options for a postcard or a letter written here: the handwriting-style fonts, the letter types, the stationery designs (with a preview picture each), the postcard sizes and fronts, and the mailing options. Read it before hip_set_postcard or hip_set_letter, and offer the person choices from it; never invent a font, design or front.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds that each stationery design carries a preview picture and imposes a 'never invent' constraint, which is real added context, but it says nothing about catalog size or how the data is organized on return beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the inventory first, then the usage rule. Every clause provides information, though the phrase 'written here' is slightly ambiguous and the sentence is inventory-heavy rather than front-loaded with a verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, an output schema present, and full annotation coverage, the description only needs to tell an agent when to call it and that the results feed a choice-presentation flow — which it does. Missing only minor details such as catalog size or whether previews are URLs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The schema is closed with additionalProperties=false, matching the description's implication that the tool takes no inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the resource contains (fonts, letter types, stationery designs with previews, postcard sizes and fronts, mailing options) and implicitly identifies it as a read-only catalog via 'read it'. It doesn't lead with a clean verb+resource phrase, but the enumeration makes the tool's content unmistakable and distinct from hip_set_postcard/hip_set_letter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing ('Read it before hip_set_postcard or hip_set_letter') names the dependent siblings, and it adds a downstream rule ('offer the person choices from it; never invent a font, design or front'). Both when-to-use and the alternative workflow are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_get_checkout_statusCheck payment statusCIdempotentInspect
Whether the customer has paid yet. Payment truth comes from the order record Stripe's webhook creates, never from a browser redirect.
| Name | Required | Description | Default |
|---|---|---|---|
| job_handle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a genuinely useful behavioral fact beyond the annotations: the payment state is derived from the order record Stripe's webhook creates, implying webhook-delivery latency and a staleness window. However, it never explains why readOnlyHint is false for what reads as a status query, so the tension between the description's query framing and the annotation is left unresolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core answer front-loaded and no filler. It is arguably under-specified for the gaps it leaves, but as a structural matter it is clean and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and no parameter documentation, the description should say what job_handle is and what the caller receives (a boolean, a status enum, an order object). Neither is addressed, so an agent cannot call it correctly without opening the schema and guessing at the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter job_handle is undocumented in both the schema and the description. The description does not say what a job handle is, where to obtain it (presumably from hip_create_checkout), or how it relates to the order record, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the semantic answer ('whether the customer has paid yet') but never names the operation or resource — it does not say this reads checkout status for a given job, and it does not distinguish itself from the sibling hip_get_order. It is more informative than a pure restatement of the title, but an agent gets no explicit verb+resource pairing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says whether to call this after a redirect, before fulfilling an order, or instead of hip_get_order. The only hint is the caution that payment truth never comes from a browser redirect, which is a data-source warning rather than routing guidance, and no alternative tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_get_orderGet order status and trackingCIdempotentInspect
Status and tracking number for the paid order belonging to this job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_handle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and (notably) readOnlyHint=false, so the safety profile is covered structurally. The description adds no behavioral context of its own: it does not say what happens if the order is unpaid, whether authorization is required, or how failures surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single economical sentence with the resource and return payload front-loaded; nothing is padded. It is a fragment rather than a full sentence, but that does not cost clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does name the return values (status, tracking number), which is the minimum needed. It omits the error/unpaid case and any note on handle provenance, leaving gaps for a one-parameter lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 0% schema description coverage, so the schema offers no help. The description partially compensates by clarifying that job_handle refers to the job whose order is being fetched, but it does not state the handle's format or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (the paid order tied to a job) and the specific payload (status and tracking number), which is more informative than the name alone. It does not explicitly differentiate from the sibling hip_get_checkout_status, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'the paid order' implies a precondition that the order must already be paid, but there is no explicit statement of when to call this versus hip_get_checkout_status or hip_complete_payment. No exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_get_service_infoService infoARead-onlyIdempotentInspect
What Have It Printed does, what it costs, what file types and sizes are accepted, and how mailing works. Needs a Bearer API key, like every tools/call (POST /v1/onboard to get one).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false, and closed-world, so the safety profile is covered. The description adds genuinely new context: a Bearer API key is required for every tools/call, and one can be obtained via POST /v1/onboard. That is useful operational detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the substantive content (what the tool returns) front-loaded and the auth requirement appended. Nothing is padded, though 'like every tools/call' is a slightly loose parenthetical that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only info endpoint with no output schema, the description adequately says what the caller gets back in prose. The only meaningful gap is the absence of any when-to-use routing among the nine siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline there is nothing for the description to document. Schema coverage is 100% (trivially empty object) and the description correctly adds no parameter claims that could conflict with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool returns: service capabilities, pricing, accepted file types/sizes, and mailing behavior. That is a concrete resource with concrete contents, far beyond restating the name 'Service info'. It does not explicitly differentiate itself from siblings, though the other tools are all distinct actions (checkout, job, quote), so the risk of confusion is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to call this versus alternatives. It is inferable that this is a first-stop reference tool, but the description never says so, nor does it note any prerequisites or ordering relative to hip_quote, hip_create_job, etc. The auth note is about how to authenticate, not about when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_get_upload_targetGet a document upload linkAInspect
Get a short-lived upload URL for the customer's document. PUT the bytes to it. File type and size limits are the same as the website.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| job_handle | Yes | ||
| content_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is not read-only and not idempotent, matching the action of obtaining an upload link. The description adds that the URL is short-lived and that file type and size limits match the website, but doesn't explain error handling, authentication, or what happens after the PUT.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that are front-loaded with the core action. No extraneous details, but the second sentence could be more specific about limits.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and no output schema, the description covers the main action and a key behavioral trait (short-lived). However, without schema descriptions, more parameter guidance would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It doesn't describe the parameters directly, but the context implies filename and content type are relevant; however, it fails to explain job_handle, content_type, or filename semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: get a short-lived upload URL for the customer's document. It clearly distinguishes from all sibling tools, which handle jobs, payments, and checkouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for uploading documents via PUT, but doesn't state when to use it versus other tools or any prerequisites beyond the upload flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_prepare_paymentPrepare the exact payable totalAIdempotentInspect
Resolve the EXACT amount HIP will charge, before any payment authorization is obtained or spent. This does NOT charge anything. Returns subtotal_cents, tax_cents, total_cents, currency, a pricing fingerprint and the authorization types HIP accepts. Tax is calculated by Stripe from the destination, so hip_quote alone is not the payable amount. The returned total is bound to this job's documents, options and recipient: change any of them and payment is refused with QUOTE_STALE until you prepare again. Use this when paying autonomously with a delegated payment authorization; a human paying in a browser does not need it. Commits the job to the autonomous payment rail.
| Name | Required | Description | Default |
|---|---|---|---|
| job_handle | Yes | ||
| buyer_email | No | optional: the buyer's email address. Have It Printed sends its order confirmation there once the payment succeeds. | |
| address_confirmed | No | optional, no longer needed: accepted for compatibility and ignored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false): it clarifies no charge occurs, that the call commits the job to the autonomous payment rail, and that the returned total is bound to the job's documents/options/recipient with a QUOTE_STALE refusal otherwise. This is exactly the mutation/staleness context an agent needs and it is consistent with the annotation profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six dense sentences, front-loaded with the key non-charge guarantee and return fields, with the use-case routing at the end. Slightly verbose in phrases like 'before any payment authorization is obtained or spent,' but almost every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly enumerates the return shape (subtotal_cents, tax_cents, total_cents, currency, pricing fingerprint, accepted authorization types). Combined with the staleness/commitment semantics, nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description adds little parameter-level detail: buyer_email and address_confirmed semantics live in the schema, and job_handle is only referenced obliquely via 'this job's documents'. The valid baseline for partial coverage is a 3 since the schema carries the documented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Resolve the EXACT amount HIP will charge') and immediately distinguishes itself from the sibling hip_quote, which produces a non-payable amount because Stripe computes tax from the destination. An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly scopes usage: 'Use this when paying autonomously with a delegated payment authorization; a human paying in a browser does not need it.' It also names the alternative (hip_quote) and explains why it is insufficient. Both the when and the when-not are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_quoteGet the priceBIdempotentInspect
Exact price for the job, computed by the same pricing the website checkout uses. Tax, if any, is added by Stripe at payment.
| Name | Required | Description | Default |
|---|---|---|---|
| job_handle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover idempotency and non-destructiveness, and the description adds genuinely useful semantics beyond them: the number is authoritative (same engine as checkout) and excludes tax, which Stripe adds later. It does not say whether a quote can change between calls, but the price-composition context is real added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what the tool returns, and the tax caveat follows naturally. Nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-with-side-effects tool with no output schema, the description explains what the number means but leaves the handle's provenance and any quote-validity window unstated. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description never mentions job_handle or where its value comes from. With schema coverage at 0% for the single required parameter, the description had to compensate and does not, leaving the agent to infer that the handle comes from hip_create_job.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: the exact price for a job, tied to the same pricing engine the website checkout uses. An agent can distinguish it from hip_get_order or hip_get_checkout_status by the pricing framing, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. It is implied you call this to learn the amount before hip_prepare_payment or hip_complete_payment, but the description never says so or states prerequisites such as needing an existing job_handle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_set_letterWrite a letter in a handwriting-style fontAIdempotentInspect
Write a letter on a job from hip_create_job, printed in a handwriting-style font, optionally on a stationery design: the letter type, the font, the message, the greeting and sign-off, the name it is signed with, and how it is mailed (flat and tracked, a First-Class letter of up to 5 pages, or a Certified letter). Have It Printed checks it as its website does (fit, names, the design's own words), counts the pages, and returns the price and a preview picture of page 1. Calling it again replaces the letter. Never include an address: the person enters the mailing address at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| font | No | a font from hip_get_catalog | |
| color | No | print in color (default false: one ink) | |
| fields | No | optional: a stationery design's or a card-style letter type's own words, by the keys hip_get_catalog lists (never an address) | |
| mailing | No | tracked_document (default): flat in a rigid mailer with a tracking number. basic_letter: folded, First-Class, no tracking, up to 5 pages. certified_letter: the same by Certified Mail, with tracking | |
| message | Yes | the body of the letter, as it should read; separate paragraphs with a blank line. The greeting and sign-off are printed from greeting/greeting_name/signoff | |
| signoff | No | optional: e.g. With love, | |
| greeting | No | optional: the opening word, e.g. Dear | |
| job_handle | Yes | ||
| stationery | No | optional: a stationery design from hip_get_catalog for this letter type | |
| letter_type | No | a letter type from hip_get_catalog (default: a plain letter) | |
| sender_name | No | the name the letter is signed with | |
| greeting_name | No | optional: the name in the greeting, e.g. Mom (not an address) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With idempotentHint and destructiveHint already declared, the description still adds substantive behaviour: validation ('checks it as its website does (fit, names, the design's own words)'), page counting, and the fact that the call returns price plus a page-1 preview. The replace-on-recall statement reconciles cleanly with the idempotent hint rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key action is front-loaded and there is no filler, but the opening sentence is very long and packs enumerations into a single run of commas, which slightly hurts scannability. Nearly every clause still earns its place, notably the closing address warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, nested-object, mutation tool this is complete: the prerequisite job handle, the catalog-sourced font/letter_type/stationery, the mailing enum, replacement semantics and the address exclusion are all covered, and the return behaviour is summarised even though an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 92%, but the description adds meaning the schema does not: it explains the three mailing modes in plain terms (flat/tracked vs First-Class up to 5 pages vs Certified), and it reinforces the address prohibition that governs 'fields', 'greeting_name' and similar free-text inputs. It goes beyond restating schema prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Write a letter on a job') and enumerates the pieces that define the artifact: font, stationery, letter type, message, mailing method. The resource is unmistakably distinct from the postcard and text-document siblings, so an agent can route on the first clause alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite clearly ('on a job from hip_create_job') and gives a use-time constraint that matters ('Never include an address: the person enters the mailing address at checkout'). It also discloses re-call behaviour ('Calling it again replaces the letter'). It does not explicitly say when to prefer hip_set_postcard or hip_add_text_document instead, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_set_postcardWrite a postcardAIdempotentInspect
Write a postcard on a job from hip_create_job: its size, its front (a front from hip_get_catalog), the message on the back in a handwriting-style font, and the name it is signed with. Have It Printed checks that the message fits the card and follows the card guidelines, and returns the price and preview pictures of both sides. Calling it again replaces the card. Postcards are printed in full color and mailed First-Class with no tracking. Never put a mailing address on the card or in this call: the person enters it at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| font | No | a font from hip_get_catalog (default: the first) | |
| size | Yes | the card's size in inches | |
| front | Yes | a front id from hip_get_catalog (design:..., or card:... when listed) | |
| message | Yes | the message on the back, as it should read | |
| job_handle | Yes | ||
| sender_name | No | the name the card is signed with | |
| front_fields | No | only for a front design that lists fields: the words it shows |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false; the description goes further by explaining that re-calls replace rather than duplicate, that validation of message fit and card guidelines happens server-side, and that printing/mailing is full color, First-Class, untracked. It does not spell out failure behavior when validation rejects the message, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first clause and the following sentences each carry operational information (validation, replacement, mailing, address prohibition). The opening enumeration partially restates schema fields, costing a little density, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter write tool with a nested object, the description covers inputs, validation, replacement semantics, return contents (price and two preview images), and fulfillment constraints. With an output schema present it correctly avoids describing response structure in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the schema carries most of the load, but the description adds real meaning: the font is a handwriting-style face drawn from hip_get_catalog, the front must be a catalog id, and sender_name is the signature line rather than an address. It does not mention front_fields, the nested object, which the schema only briefly labels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Write a postcard on a job') and immediately enumerates the content the call defines: size, front, message, signature. It is clearly distinguishable from the sibling hip_set_letter and from hip_create_job, which it names as the source of the job handle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit prerequisites (job from hip_create_job, front from hip_get_catalog), states the re-invocation semantics ('Calling it again replaces the card'), and adds a hard exclusion: never put a mailing address on the card or in this call because the recipient supplies it at checkout. That is when-to-use, when-not-to, and where the alternative lives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hip_update_jobSet documents and recipientBIdempotentInspect
Set the documents, print options and US mailing recipient on a job. Price fields are rejected: the server computes all amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | ||
| options | No | ||
| product | No | how the job is mailed. tracked_document (the default): printed and mailed flat in a rigid mailer with a free tracking number. basic_letter: up to 5 pages, one copy of each document, folded into a standard envelope and mailed First-Class, with no tracking. certified_letter: the same letter sent by Certified Mail, with a tracking number. hip_get_service_info has the prices. | |
| recipient | No | US mailing address | |
| job_handle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive, closed-world mutation, and the description's 'Set' wording is consistent with idempotentHint=true. It adds one genuinely useful behavioral rule beyond the annotations: price fields are rejected because the server computes all amounts. However, it does not say whether a second call replaces or merges documents, nor what state the job must be in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and its targets, followed by the one non-obvious constraint. Every clause carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object mutation with no output schema and only 40% parameter coverage, the description covers the shape of the call but not the operational context: replacement vs. merge behavior, required job state, and what a successful response confirms are all absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description has to compensate and partly does by naming documents, print options, and the recipient, and by flagging that price fields are invalid input. It still leaves the free-form 'options' object unexplained and says nothing about job_handle semantics or how the files array relates to existing documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and enumerates the resources being set: documents, print options, and US mailing recipient on a job. It clearly implies a mutation of an existing job rather than creation, which separates it from hip_create_job, but it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no statement of prerequisites (e.g. the job must already exist and be in an editable state), and no routing to alternatives such as hip_create_job or hip_get_service_info. The only implicit signal is the required job_handle, which the agent must infer means an existing job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Added
hip_get_catalog - Added
hip_set_letter - Added
hip_set_postcard
1 tool update
- Changed
hip_prepare_payment1 field changed- changed
Input schema / properties / address_confirmed / descriptionPrevious value: -"optional: true only after ADDRESS_UNVERIFIED, when the person confirms the recipient's address is right as it is (Have It Printed checks it again after payment and holds it for a person before anything prints)."New value: +"optional, no longer needed: accepted for compatibility and ignored."
1 tool update
- Changed
hip_prepare_payment1 field changed- added
Input schema / properties / address_confirmedAdded value: +{ + "description": "optional: true only after ADDRESS_UNVERIFIED, when the person confirms the recipient's address is right as it is (Have It Printed checks it again after payment and holds it for a person before anything prints).", + "type": "boolean" +}
2 tool updates
- Added
hip_add_text_document - Changed
hip_update_job1 field changed- added
Input schema / properties / productAdded value: +{ + "description": "how the job is mailed. tracked_document (the default): printed and mailed flat in a rigid mailer with a free tracking number. basic_letter: up to 5 pages, one copy of each document, folded into a standard envelope and mailed First-Class, with no tracking. certified_letter: the same letter sent by Certified Mail, with a tracking number. hip_get_service_info has the prices.", + "enum": [ + "tracked_document", + "basic_letter", + "certified_letter" + ], + "type": "string" +}
1 tool update
- Changed
hip_update_job1 field changed- changed
Input schema / properties / files / items / properties / size / enumPrevious value: -[ - "8.5x11", - "8x10", - "11x17" -]New value: +[ + "8.5x11" +]
1 tool update
- Changed
hip_prepare_payment1 field changed- added
Input schema / properties / buyer_emailAdded value: +{ + "description": "optional: the buyer's email address. Have It Printed sends its order confirmation there once the payment succeeds.", + "type": "string" +}
2 tool updates
- Added
hip_complete_payment - Added
hip_prepare_payment
2 tool updates
- Removed
hip_complete_payment - Removed
hip_prepare_payment
10 tool updates
- First observed
hip_complete_payment - First observed
hip_create_checkout - First observed
hip_create_job - First observed
hip_get_checkout_status - First observed
hip_get_order - First observed
hip_get_service_info - First observed
hip_get_upload_target - First observed
hip_prepare_payment - First observed
hip_quote - First observed
hip_update_job
Related MCP Connectors
Mail real US letters, postcards and certified mail from an agent, quoted before sending.
Print and mail US letters by USPS First-Class, with tracking.
Send USPS letters & certified mail from any agent. Hosted: sign in, no install.
1Print and mail real letters worldwide from the EU, incl. registered mail. Quote, compose, send.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agents to create and pay for physical postcards and letters, returning print previews and Stripe checkout links, with human review before USPS First-Class mailing to US addresses.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to prepare, price, review, pay for, and send real physical letters and postcards via a hosted MCP server.-
- AlicenseAqualityDmaintenanceSend real physical postcards worldwide via AI agents. Supports single and bulk send (up to 500 recipients), balance checking, delivery tracking, and volume pricing from $0.72/card.5237 npm5MIT
- AlicenseAqualityBmaintenanceEnables sending physical letters (including registered mail) from PDFs via the Pingen API, with tools to manage drafts, submit, track, and cancel letters.919 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.