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.1% over 44 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 11 tools
Most tools target distinct actions (create_job, add_text_document, get_upload_target, get_order), but the pricing pair hip_quote vs hip_prepare_payment and the payment-status pair hip_get_checkout_status vs hip_get_order require careful reading to distinguish. The two payment rails (hip_complete_payment vs hip_create_checkout) are clearly separated by their descriptions, but the quote/prepare overlap is a real misselection risk.
Every tool uses the same hip_ prefix followed by a consistent snake_case verb_noun pattern (create_job, add_text_document, get_upload_target, complete_payment). No style mixing or vague verbs.
11 tools is well-scoped for a print-and-mail service that supports both autonomous and browser payment flows, document upload, and quoting. Each tool earns its place with no obvious redundancy.
The lifecycle is largely covered: create job, attach documents/options/recipient, quote, pay (two rails), and retrieve order/tracking. Minor gaps exist, such as no cancel/delete job or list-jobs operation, but core workflows are complete.
Available Tools
11 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_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. The recipient's address is checked with USPS first: ADDRESS_UNVERIFIED (with a hint) means correct it with hip_update_job, or set address_confirmed if the person confirms it is right as it is.
| 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: 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). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the generic safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description adds the substance an agent actually needs: no money is charged at this step, the returned total is fingerprinted and bound to documents/recipient, any change produces QUOTE_STALE, and the tool commits the job to the autonomous payment rail. That side-effect disclosure is exactly the value-add the annotations cannot supply.
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-loaded with the core promise ('no charge') before escalating to staleness rules and error handling, and each sentence carries distinct information. It is dense and somewhat long, with mild redundancy between the opening 'before any payment authorization is obtained' and the later 'commits the job to the autonomous payment rail,' costing it the top score.
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, and the description compensates by enumerating the return payload (subtotal_cents, tax_cents, total_cents, currency, pricing fingerprint, accepted authorization types). It also covers the two meaningful failure modes (QUOTE_STALE and ADDRESS_UNVERIFIED) with remedies, which is everything needed to call this correctly.
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 undocumented parameter is the required job_handle, which the description never explains. It does add real context for address_confirmed by describing the ADDRESS_UNVERIFIED flow it responds to, and buyer_email is documented in the schema already. Net: baseline 3, since the description neither compensates for the job_handle gap nor repeats 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?
States a specific verb and resource ('Resolve the EXACT amount HIP will charge') and immediately scopes it negatively ('This does NOT charge anything'). It explicitly distinguishes itself from the sibling hip_quote ('hip_quote alone is not the payable amount'), so an agent can route correctly 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?
Gives an explicit when-to-use condition ('paying autonomously with a delegated payment authorization') and an explicit when-not ('a human paying in a browser does not need it'). It also names the recovery path for the ADDRESS_UNVERIFIED error (hip_update_job), routing the agent to the right sibling in the failure case.
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_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.
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 real letters worldwide from the EU, incl. registered mail. Quote, compose, send.
Print & mail PDF/HTML/Markdown/text/DOCX/images to US addresses; pay per call in x402 USDC on Base.
Your agent sends real postcards and letters. You approve; we print and mail.
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.514 npm5MIT
- AlicenseAqualityAmaintenanceEnables sending physical letters (including registered mail) from PDFs via the Pingen API, with tools to manage drafts, submit, track, and cancel letters.93 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.