Get a letter
lob_get_letterRetrieve a single letter by id, including status, PDF url, and tracking. Lob API: GET /v1/letters/{id}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Letter id (ltr_…). |
lob_get_letterRetrieve a single letter by id, including status, PDF url, and tracking. Lob API: GET /v1/letters/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Letter id (ltr_…). |
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, which is consistent. The description adds the HTTP method (GET) via the API endpoint, providing a behavioral detail. No additional behavioral traits like authentication or rate limits are mentioned, which is acceptable for a simple read operation.
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 description is extremely concise: one sentence with core purpose plus the API endpoint. It front-loads the action and result, with no wasted 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 simple retrieval tool with no output schema, the description covers purpose, input (by ID), and output fields (status, PDF, tracking). It does not mention error handling but provides sufficient context for an agent to understand the return values.
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 100% for the single parameter 'id', so baseline is 3. The description does not add extra semantic meaning beyond the schema; it merely reiterates 'by id'. No examples or format details beyond the schema's description.
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 uses the verb 'Retrieve' and specifies the resource 'a single letter' with included fields (status, PDF url, tracking). It distinguishes from siblings like lob_list_letters (returns many) and lob_create_letter (creates). Also includes the explicit API endpoint.
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 usage: when you need a single letter by its ID. While it does not explicitly compare with alternatives or state prerequisites, the simplicity of the tool makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.
Every tool targets a distinct resource and action, with clear verb-noun names like create_address and verify_us_address. There is no overlapping functionality, and even similar operations (e.g., list for different resources) are distinct.
All tools share the 'lob_' prefix and follow a consistent verb_noun pattern (e.g., create_postcard, list_letters, verify_intl_address). Multi-word nouns use underscores, maintaining uniformity throughout.
With 18 tools, the set covers the primary mail fulfillment operations—address management, postcards, letters, checks, self-mailers, and address verification—without feeling bloated or sparse. The count is well-suited to the domain.
The tool set has notable gaps: no create_check or create_self_mailer, no cancel for letters or checks despite being referenced, no update/delete for addresses, and only list for templates. These missing operations will likely cause agent failures in common workflows.