mailbox
Server Details
Physical mail API for AI agents. Send letters, certified mail. Sandbox + live keys via MCP.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 30 of 30 tools scored. Lowest: 3.3/5.
Most tools have clearly distinct purposes, with categories like inbound mail, outbound mail, packages, facility communication, and instructions. Minor overlap exists between list_packages and list_inbound_mail, and get_mailbox vs get_mailbox_md, but descriptions clarify the differences.
All tools follow a consistent verb_noun pattern with underscores, using common verbs like get_, list_, create_, send_, request_, update_. The only minor abbreviation is get_mailbox_md, but it doesn't break the pattern.
With 30 tools, the surface feels over-scoped for a single server. While the domain is broad, many tools could be consolidated (e.g., separate test outbound tools, many view variants). This exceeds the reasonable range for agent discoverability.
Core workflows for inbound/outbound mail, packages, and facility communication are covered. However, there are gaps: create_rule has no corresponding list/update/delete rule tools, and update_webhook lacks a delete/disable capability. Also get_mailbox is beta-only, requiring workarounds.
Available Tools
30 toolsadd_noteAInspect
Add an observation or context note to a package. Notes are visible to the facility operator and the renter. Use for recording decisions, observations, or agent reasoning.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | Note text (e.g. "Appears to be the replacement GPU from RMA #4521"). | |
| metadata | No | Optional structured metadata attached to the note (e.g. { "rma_number": "4521", "vendor": "NVIDIA" }). | |
| package_id | Yes | UUID of the package to annotate. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created package note record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, covering the safety profile. The description adds valuable context beyond annotations: notes are visible to the facility operator and renter, and it clarifies the nature of the content (observations/decisions). This enriches understanding of the tool's side effects without contradicting annotations.
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 three concise sentences, each adding distinct value: the action, the visibility, and the intended usage. It is front-loaded with the verb and object, contains no redundant phrases, and 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?
Given the tool's simplicity, presence of an output schema, and annotations, the description covers purpose, visibility, and usage comprehensively. A minor gap is the lack of explicit mention of whether multiple notes can be added or storage limits, but this is not critical for agent invocation and does not undermine 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 description coverage is 100%, with each parameter (package_id, note, metadata) described and provided with examples. The description's reference to 'observation or context note' aligns with the 'note' parameter but adds no new semantic information; the schema already handles parameter understanding well.
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 a specific verb 'Add' and a specific resource ('observation or context note to a package'), making the action and target unmistakable. It also distinguishes from the sibling tool 'add_tag' by clarifying that this adds a note, not a tag, and mentions visibility to facility operator and renter, reinforcing its unique purpose.
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 explicitly states 'Use for recording decisions, observations, or agent reasoning', providing clear guidance on when to use this tool. While it doesn't explicitly mention alternatives or exclusions, the context makes its intended use apparent without needing to reference sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tagAIdempotentInspect
Add a tag/label to a package for categorization and filtering. Tags are free-form strings. Adding the same tag twice is a no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag name (e.g. "hardware-order", "urgent", "return-needed"). Free-form, case-sensitive. | |
| package_id | Yes | UUID of the package to tag. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created or existing package tag record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'Adding the same tag twice is a no-op', which aligns with the idempotentHint=true annotation and gives concrete behavioral information. However, the annotation already indicates idempotency, and the description does not disclose additional behavioral traits such as return values or error handling.
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 two sentences, front-loaded with the primary action and purpose, and includes the idempotency detail without unnecessary verbosity. 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?
The tool is simple, and the description covers purpose, idempotency, and target. The input schema and output schema handle parameter details and return values. It does not mention potential usage alternatives or prerequisites, but for a straightforward add operation this is 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?
The input schema provides complete descriptions for both parameters (package_id and tag), covering 100% of the schema. The description's mention of 'free-form strings' is redundant with the schema's tag description, so it adds no meaningful beyond what the schema already clarifies.
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 clearly states the action ('Add a tag/label'), the target ('to a package'), and the purpose ('for categorization and filtering'). It distinguishes the tool from siblings like add_note by specifying 'tag/label' as the object being added.
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 for categorization and filtering but provides no explicit guidance on when to use this tool over alternatives, and does not mention exclusions. There is no reference to add_note or other related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
advance_test_outbound_mailAInspect
Advance a test_mode outbound mail record one lifecycle step and queue the matching webhook. submitted becomes ready with simulated pages/envelope photos; ready becomes mailed with carrier, dispatch method, receipt photo, and tracking when the selected service includes tracking; mailed becomes delivered.
| Name | Required | Description | Default |
|---|---|---|---|
| mail_id | Yes | UUID of the test_mode outbound mail record to advance. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Advanced sandbox outbound mail job and webhook status. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by disclosing that it queues a webhook and details the simulated data set at each transition (pages/envelope photos, carrier, dispatch method, receipt photo, tracking). This is valuable behavioral context. It does not mention idempotency or failure modes, but the annotations already indicate non-idempotent behavior. No contradiction.
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 two sentences, front-loaded with the main action, and packs the state transition details concisely without wordiness. Every sentence contributes meaningful information.
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 tool with one parameter and an output schema, the description covers the core behavior and state transitions well. It does not mention edge cases like invalid current state or webhook failure, but these are secondary for a test-mode simulator. The description is complete enough for an agent to invoke 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?
The input schema describes mail_id as 'UUID of the test_mode outbound mail record to advance' with 100% coverage. The description adds no additional parameter syntax or format details. The lifecycle context is useful but not required for understanding the parameter itself. Baseline 3 is appropriate.
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 clearly states the verb ('advance') and resource ('test_mode outbound mail record'), and explains the exact lifecycle step transition. It distinguishes from sibling tools like create_test_outbound_mail and cancel_outbound_mail by its specific action scope. The state machine detail leaves no ambiguity about what the tool does.
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 provides clear context: this is for test_mode outbound mail records and advances them one step. It implies usage for simulating lifecycle progression, but does not explicitly mention when not to use it or name alternatives (e.g., use send_outbound_mail for real records). The context is sufficient but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_outbound_mailADestructiveIdempotentInspect
Cancel a queued outbound mail job before facility printing starts. If the mail was funded with prepaid credits, eligible credits are returned to the member ledger. Safe to retry: already-cancelled mail returns cancelled status without creating a duplicate refund. In chat, report cancellation status, returned credits, updated balance, and whether it had already been cancelled. If a transient error occurs, poll the mail status and credits before retrying.
| Name | Required | Description | Default |
|---|---|---|---|
| mail_id | Yes | UUID of the queued outbound mail job to cancel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Cancelled queued outbound mail and returned credits when eligible. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructive, idempotent), the description discloses important side effects: prepaid credits are returned to the member ledger, already-cancelled mail returns cancelled status without duplicate refund, and transient errors should be handled by polling mail status and credits before retrying. This adds significant behavioral context that annotations alone don't provide.
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 four sentences, each serving a distinct purpose: stating the action, explaining credit refunds, noting idempotency, and giving error-handling guidance. It is front-loaded with the main purpose and contains 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?
With a single parameter, rich annotations (destructive, idempotent), and an existing output schema, the description fills the remaining gaps: credit-return behavior, retry safety, chat reporting expectations, and transient error handling. This is fully complete for selection and invocation.
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 input schema fully documents the single parameter (mail_id) with a clear description, achieving 100% schema description coverage. The tool description itself adds no further parameter-specific information beyond what the schema already states, so baseline 3 is appropriate.
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 immediately states a specific action: 'Cancel a queued outbound mail job before facility printing starts.' This clearly identifies the resource (queued outbound mail job) and the verb (cancel), and distinguishes it from sibling tools like send_outbound_mail or list_outbound_mail.
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 provides clear timing constraints ('before facility printing starts') and explicitly states this action is safe to retry without duplicate refunds. It does not explicitly name alternative tools, but the context is sufficient for selecting this tool over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ruleAInspect
Create a standing instruction that auto-triggers actions when incoming packages match conditions. Rules run on every new package and execute the specified action if all conditions match. Use requires_approval to add a human review step before execution.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable rule name (e.g. "Forward Amazon packages", "Shred junk mail"). | |
| conditions | Yes | Conditions that must ALL match for the rule to trigger. | |
| action_type | Yes | Action to auto-trigger when conditions match. | |
| action_params | Yes | Parameters for the action (e.g. forwarding address for "forward", scan_type for "scan"). | |
| requires_approval | No | If true, matched packages require human approval before the action executes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created standing rule record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-idempotent, and non-destructive. The description adds valuable behavioral context by explaining that the rule auto-triggers on every new package, executes the action when conditions match, and that requires_approval adds a human review step. This goes beyond the annotations without contradicting them.
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 two sentences, immediately states the core purpose, and includes a practical usage tip. Every sentence earns its place with no redundancy or 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?
Given the tool's complexity (nested conditions, multiple actions, approval flag) and the existence of an output schema, the description covers the essential behavior for an agent to select and invoke the tool. It lacks a few edge-case details (e.g., whether existing packages are affected) but overall is sufficiently complete.
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 100%, so the baseline is 3. The description mentions requires_approval's purpose, but the schema already explains that parameter fully. It adds no additional syntax or semantics beyond what the schema provides, so it stays at baseline.
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 clearly states 'Create a standing instruction that auto-triggers actions when incoming packages match conditions,' which specifies both the resource (rule/standing instruction) and the verb (create), and distinguishes it from sibling tools like create_test_outbound_mail or update_action by emphasizing the rule-based, auto-triggering nature.
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 provides clear context for usage: 'Rules run on every new package and execute the specified action if all conditions match' and gives a specific usage tip for requires_approval. However, it does not explicitly mention any alternative tools or when not to use this tool, so while context is clear, exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_outbound_mailAInspect
Create a sandbox outbound mail record without uploading a real document. The record is always test_mode=true, cost_cents=0, includes estimated_live_cost_cents and cost_breakdown, and queues a mail.submitted webhook. Published default pricing is $0.30/page B&W printing; color adds $0.40/page ($0.70/page total before handling and postage). FedEx and UPS estimates use the same configured origin and destination zone/region logic as production. Use with a sandbox key to rehearse outbound workflows before sending real physical mail.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Whether to include the additional $0.40/page color-print surcharge in the live estimate ($0.70/page total before handling and postage by default). | |
| metadata | No | Arbitrary metadata echoed in responses and webhooks. | |
| mail_class | No | Mail class to simulate. Postal or carrier service. Do not infer speed, tracking, or proof from carrier marketing names. Use first_class for ordinary lowest-cost USPS letters with no carrier tracking number by default. Use priority for faster USPS Priority Mail with USPS Tracking, but not Certified Mail proof; priority has a $15.00 published one-page floor. Use certified for USPS tracking plus proof of mailing/delivery; certified has a $20.00 published one-page floor. Use certified_return_receipt when electronic return-receipt evidence is required; certified_return_receipt has a $24.00 published one-page floor. Use fedex_ground or ups_ground for budget private-carrier tracking; fedex_express means FedEx Express Saver/third-business-day, fedex_2day and ups_2day mean second-business-day, and fedex_overnight or ups_next_day mean next-business-day. FedEx express classes use the Standard List document baseline from the configured fulfillment origin unless FedEx One Rate is explicitly configured operationally. | first_class |
| page_count | No | Simulated page count used for pricing. | |
| agent_notes | No | Optional facility/operator notes for the simulated mailpiece. | |
| recipient_zip | No | Recipient ZIP code. Affects estimated live postage, private-carrier zone, and FedEx local/regional/national area. | 94105 |
| recipient_city | No | Recipient city. | San Francisco |
| recipient_name | No | Recipient name for the simulated mailpiece. Optional when recipient_company is provided. | Test Recipient |
| recipient_line1 | No | Recipient street line 1. | 123 Test Street |
| recipient_state | No | Recipient 2-letter state code. | CA |
| recipient_company | No | Company or organization line for the simulated mailpiece. Optional when recipient_name is provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created sandbox outbound mail job and webhook status. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors beyond annotations: always test_mode=true, cost_cents=0, includes estimated_live_cost_cents and cost_breakdown, queues a mail.submitted webhook, and uses same origin/zone logic as production. These details inform the agent of side effects and constraints, complementing the annotations without contradiction.
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 a single, well-organized paragraph that front-loads the core purpose, then provides pricing and behavioral details. Every sentence adds value, and the length is appropriate for a tool with 11 parameters and complex pricing rules.
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 output schema exists and the schema already documents parameters, the description effectively covers the tool's purpose, usage context, test-mode behavior, pricing model, and webhook side effects. It is complete for an agent to select and invoke the tool 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?
The schema covers 100% of parameters with detailed descriptions, and the tool description adds valuable context: published default pricing ($0.30/page B&W, color surcharge), the relationship between parameters (e.g., color affects estimate), and that FedEx/UPS estimates use production logic. This enhances understanding beyond the schema alone.
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 clearly states 'Create a sandbox outbound mail record without uploading a real document,' using a specific verb and resource. It explicitly distinguishes from siblings by emphasizing test_mode=true and rehearsal before real mail, making it distinct from send_outbound_mail and other production tools.
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 explicitly instructs 'Use with a sandbox key to rehearse outbound workflows before sending real physical mail,' providing clear when-to-use guidance. It also implies the alternative (production tools) by noting this is for rehearsal, and covers the intended context without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_facility_messagesARead-onlyIdempotentInspect
Read the message thread with Austin HQ. Facility routing is automatic. Returns messages in reverse chronological order with sender role (member, facility, agent). Supports cursor-based pagination. Automatically marks facility messages as read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of messages to return (1-100). Defaults to 50. | |
| before | No | Cursor: only return messages sent before this ISO 8601 timestamp. Use the oldest message timestamp from the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Messages exchanged with a facility. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds valuable behavioral context: 'reverse chronological order,' 'sender role (member, facility, agent),' 'cursor-based pagination,' and notably 'Automatically marks facility messages as read'—a side effect not covered by the annotations. This is transparent and does not contradict the annotations.
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 four sentences, all informative. It is front-loaded with the core action, then adds routing, ordering, sender roles, pagination, and the read side effect. No filler or redundant restatement of the tool name.
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 has an output schema (messages with sender roles) and only two optional parameters, the description covers all essential user-facing behavior: what it reads (message thread), ordering, pagination mechanism, and side effect (marks as read). The 'Facility routing is automatic' clause clarifies there is no need for a facility ID. This is complete for an agent to select and invoke the tool 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 description coverage is 100% (both 'limit' and 'before' have detailed descriptions). The description adds only general context about pagination ('cursor-based pagination') that reinforces, rather than extends, the schema. It does not provide deeper parameter semantics beyond what the schema already offers, so baseline 3 is appropriate.
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 starts with a specific verb+resource: 'Read the message thread with Austin HQ.' It clearly distinguishes from siblings like send_facility_message (write) and list_facility_conversations (list conversations, not messages). 'Facility routing is automatic' adds scope, making the tool's purpose unmistakable.
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 clearly implies use for reading the facility message thread, not sending (send_facility_message) or listing conversations (list_facility_conversations). 'Facility routing is automatic' tells the agent no additional routing parameter is needed. However, it does not explicitly name alternative tools or state exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inbound_mailARead-onlyIdempotentInspect
Get one forwarded inbound mail item with compact draft_context by default. Use this before drafting an outbound reply when you need sender context, reply contact candidates, deadline clues, source files, and thread linkage in one stable payload.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Optional expansions. Defaults to ["drafting"]. Add signed_urls only when the agent truly needs temporary file access. | |
| signed_urls | No | If true, return short-lived signed URLs for stored files. | |
| inbound_mail_id | Yes | UUID of the inbound mail item to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | One forwarded inbound mail item. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds valuable behavioral context: 'compact draft_context by default' and 'stable payload', which go beyond the annotations and help the agent understand what the response will feel like.
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, front-loaded with the purpose, immediately followed by usage guidance. Every word earns its place, no fluff or repetition of schema details.
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 an output schema present, the description need not enumerate return values. It explains when to use the tool, what type of data to expect (sender context, contacts, deadlines, files, thread linkage), and the default behavior. This is complete for a single-item retrieval tool with robust annotations.
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%, so parameters are fully documented in the schema. The description adds minimal semantic value beyond the schema, only implying default behavior ('compact draft_context by default') which aligns with the include parameter's documented default. Baseline 3 is appropriate when schema carries the explanatory weight.
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 clearly states the verb and resource: 'Get one forwarded inbound mail item with compact draft_context by default.' It distinguishes from siblings like get_outbound_mail and list_inbound_mail by specifying this is for a single inbound item and for pre-reply drafting context.
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 says 'Use this before drafting an outbound reply when you need sender context, reply contact candidates, deadline clues, source files, and thread linkage in one stable payload.' This provides clear context for when to use, but doesn't explicitly name alternatives or exclusions like list_inbound_mail for multiple items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mailboxARead-onlyIdempotentInspect
Get your agent's real mailing address beta endpoint when the account has explicit beta access: street address + mailbox number for approved accounts. For generally available inbound context, use list_inbound_forwarding_addresses instead; that returns a private intake alias for scans, PDFs, photos, provider notices, and notes from addresses the operator already uses.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Mailbox address, facility, and status details. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds the beta-access restriction and 'approved accounts' context, which is valuable behavioral information not present in the annotations. It does not explain what happens if beta access is missing, but this is a minor 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?
Two sentences: first states the tool's purpose and access requirements, second provides an alternative. It is front-loaded, free of redundancy, and every sentence serves a distinct function.
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 zero parameters, a documented output schema, and clear annotations (read-only, idempotent), the description fully covers usage context. It also notes the beta access constraint and alternative tool, making it complete for practical decision-making.
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 has zero parameters, so the description need not elaborate on parameter details. The baseline for 0 parameters is 4, and no additional parameter explanation is needed.
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 clearly states the tool retrieves the agent's real mailing address (street address + mailbox number) for beta-approved accounts, and explicitly distinguishes it from the sibling list_inbound_forwarding_addresses tool by noting that tool returns a private intake alias for general inbound context.
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 explicit when-to-use guidance: use this tool only for the beta mailbox address, and for generally available inbound context, use list_inbound_forwarding_addresses instead. This directly addresses alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mailbox_mdARead-onlyIdempotentInspect
Get the renter's MAILBOX.md standing instructions for this agent. Returns the full instruction text, version number, content hash, and last update timestamp. Call this on startup and cache the version — you must pass it to send_outbound_mail and update_action for sync verification.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Current MAILBOX.md standing instructions. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent hints. The description adds value by explaining the sync verification role and that the version should be cached, providing context beyond the annotations. No contradictions found.
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 concise sentences with no fluff. The first sentence states purpose, the second lists return fields, and the third gives actionable usage guidance. Well-structured and front-loaded.
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 parameterless tool with an output schema, the description covers purpose, usage, and key return fields. It provides all necessary context without redundancy.
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 has zero parameters, so schema coverage is 100% by default. The description appropriately focuses on what the tool returns and its usage context, fulfilling the baseline for parameterless tools.
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 clearly states the tool retrieves the renter's MAILBOX.md standing instructions, specifying the exact resource and its purpose. It distinguishes from sibling tools like get_mailbox by emphasizing the MAILBOX.md content and version tracking.
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 explicit guidance: call on startup, cache the version, and pass it to send_outbound_mail and update_action for sync verification. This tells the agent exactly when and why to use this tool, effectively differentiating it from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outbound_mailARead-onlyIdempotentInspect
Get full details of an outbound mail job including recipient address, mail class, page count, cost breakdown, current status, failure metadata, document metadata, and fulfillment photos. Legacy plaintext records may include direct document URLs; encrypted source documents are retrieved through the REST document endpoint with document.read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| mail_id | Yes | UUID of the outbound mail job to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Full outbound mail job details. Direct document URLs are only present for legacy plaintext rows. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only/idempotent. The description adds valuable behavioral context: legacy records may contain direct document URLs, while encrypted documents are fetched via a REST endpoint requiring document.read scope. This goes beyond the annotations and helps the agent anticipate authentication and data-format nuances.
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, front-loaded with the main purpose, and the second adds an important caveat about document retrieval. No fluff; every phrase 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?
The description covers the full scope of returned data (including metadata, failure info, photos) and describes the special case for encrypted vs. plaintext documents. Together with the output schema, it is fully complete for this get-by-id 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?
Schema coverage is 100% (mail_id is described as UUID of the job to retrieve). The description adds no extra meaning about the parameter itself, so the baseline of 3 applies.
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 clearly states the tool retrieves full details of a single outbound mail job, listing specific fields (recipient, mail class, cost, status, etc.). This distinguishes it from siblings like list_outbound_mail (which lists jobs) and get_inbound_mail (which handles inbound).
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: call this when you need comprehensive details for a specific outbound mail job (by ID). It does not explicitly name alternatives, but the context is clear enough that it is the detail endpoint vs. a list or action tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_packageARead-onlyIdempotentInspect
Get full package details including photos, tracking events, shipping label data (carrier, addresses, weight), forwarding status, storage location, and action history.
| Name | Required | Description | Default |
|---|---|---|---|
| package_id | Yes | UUID of the package to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Package details with photos, events, and extracted label data. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, and idempotent nature of the tool. The description adds value by listing the content scope (photos, tracking, shipping label, etc.), but it does not disclose behavioral traits such as error handling, pagination, or authentication requirements. This is acceptable given the annotations, but not rich enough for a higher score.
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 a single, front-loaded sentence that is concise and information-dense, listing exactly what the tool returns without fluff or repetition. It earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, read-only, with an output schema), the description fully covers what the agent needs to know to invoke it correctly. It lists all major data areas and relies on the output schema for structure, making it complete for this tool type.
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 schema provides 100% coverage of the single parameter (package_id) with a clear description. The tool description does not need to add parameter details, and the baseline for high schema coverage is 3. No additional meaning is provided by the description beyond 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 clearly states 'Get full package details' and enumerates specific data categories (photos, tracking events, shipping label data, forwarding status, storage location, action history), making the tool's purpose specific and distinguishable from siblings like get_package_photos and list_packages.
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 use when comprehensive package information is needed by listing the full set of included details, but it does not explicitly mention when to avoid this tool or name alternatives. This provides clear context without exclusions, fitting a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_package_photosARead-onlyIdempotentInspect
Get photos for a package with OCR-extracted text and confidence scores. Filter by photo type to get only exterior shots, label closeups, barcode scans, or content scans.
| Name | Required | Description | Default |
|---|---|---|---|
| package_id | Yes | UUID of the package to get photos for. | |
| photo_type | No | Filter by photo type. "exterior" = package exterior, "label" = shipping label closeup, "barcode" = barcode scan, "content_scan" = opened package contents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Package photo records with OCR metadata. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and non-destructive behavior. The description adds useful context about the return content (OCR text and confidence scores), which is behavioral information not present in annotations or 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 concise, front-loaded sentences with no filler. The first sentence states the primary function, and the second explains filtering, making it well-structured and easy to parse.
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 read-only tool with an output schema and full parameter coverage, the description is complete. It covers the main purpose and the key filtering capability without needing to detail return structure or other edge cases.
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 covers both parameters with full descriptions, so the baseline is 3. The description paraphrases the photo_type enum but does not add meaningful semantic value beyond what is already in 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 clearly states the tool retrieves photos for a package and includes OCR-extracted text and confidence scores. This distinguishes it from sibling tools like get_package or get_scan_results, which serve different purposes.
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 explains the photo_type filter with specific categories, giving clear context on how to narrow results. However, it does not explicitly name alternative tools or state when not to use this tool, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postal_threadARead-onlyIdempotentInspect
Get one physical-mail thread with optional timeline events. Use this to explain how a generated outbound mail piece relates back to prior inbound scans and review decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Optional expansions. Add events to include inbound/outbound timeline references. | |
| thread_id | Yes | UUID of the postal mail thread to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | One postal mail workflow thread. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds minimal behavioral context beyond mentioning 'optional timeline events,' which is already present in the schema. It does not describe additional behaviors like empty results or error cases.
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 two sentences, first stating the action and optional component, second giving the recommended use case. Every word earns its place without redundancy or fluff.
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 tool is simple (2 params, output schema provided), and the description plus annotations fully cover safety, purpose, and usage context. No significant gaps remain for the agent to select and invoke this tool 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 description coverage is 100%, with both parameters fully documented in the schema. The description's mention of 'optional timeline events' adds no new meaning beyond the 'include' parameter schema. The baseline of 3 applies when the schema carries the semantic weight.
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 clearly states the tool's function: 'Get one physical-mail thread with optional timeline events.' It specifies a distinct resource (a single postal thread) and action, distinguishing it from siblings like list_postal_threads. The additional use case sentence explains the tool's purpose in business terms.
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 provides a clear usage context: 'Use this to explain how a generated outbound mail piece relates back to prior inbound scans and review decisions.' This implies when to use it, though it does not explicitly mention alternatives or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scan_resultsARead-onlyIdempotentInspect
Get document scan results including raw OCR text, structured data fields (addresses, dates, amounts), and confidence scores. Returns empty if scan is still processing.
| Name | Required | Description | Default |
|---|---|---|---|
| package_id | Yes | UUID of the package to get scan results for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Document scan records and OCR results. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context by stating the empty response during processing and enumerating the output content. This goes beyond what annotations alone convey, though it does not cover edge cases like missing scan requests.
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, front-loaded with the core purpose, and no unnecessary detail. Every word adds value, including the processing-state caveat.
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 1-parameter read-only tool, the description is quite complete: it specifies what is returned and the empty-processing case. The existence of an output schema covers return-value details. It could be improved by noting that empty results also occur if no scan exists for the package, but the current wording is sufficiently clear for typical usage.
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 input schema already fully describes package_id as a UUID with a clear description (100% coverage). The tool description does not add additional parameter-level meaning beyond what is in the schema, so the baseline of 3 applies.
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?
Description states a specific verb+resource ('Get document scan results') and enumerates the content (raw OCR text, structured data fields, confidence scores), distinguishing it from sibling tools like get_package or request_scan. It also notes the empty-while-processing behavior, which further clarifies its role.
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 after a scan has been requested and that polling may be needed ('Returns empty if scan is still processing'), but it does not explicitly mention alternatives or when not to use this tool. The sibling context (request_scan) provides some guidance, but the description itself lacks explicit exclusion or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageARead-onlyIdempotentInspect
Get usage summary, billing events, and prepaid credit balance for a time period. Returns itemized events (scans, forwards, mail sends) with costs, period totals, and credits. Defaults to the current billing period if no dates are specified. Use this in Cursor/MCP chat when the human asks how many mailbox.bot credits are left; answer with the prepaid balance and explain that only the signed-in human can add funds.
| Name | Required | Description | Default |
|---|---|---|---|
| period_end | No | End of the reporting period in ISO 8601 format. Defaults to now. | |
| period_start | No | Start of the reporting period in ISO 8601 format. Defaults to current billing period start. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Usage summary, billing events, and prepaid credit balance. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds useful context about return content (billing events, costs, credits) and the default period. It also notes that 'only the signed-in human can add funds,' which provides auth-related context beyond annotations.
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 concise sentences front-load the main purpose, include key behavioral details, and provide a specific use-case. No filler or redundancy.
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 is complete given its complexity: output schema covers returns, annotations cover safety, and the description covers purpose, defaults, and a concrete usage scenario. Nothing significant 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 descriptions cover both parameters fully (100% coverage). The description adds value by summarizing the combined default behavior: 'Defaults to the current billing period if no dates are specified,' reinforcing optionality and providing a holistic view of the parameters.
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 clearly states the tool's function: 'Get usage summary, billing events, and prepaid credit balance for a time period.' It specifies output content (itemized events, costs, totals, credits) and is distinct from sibling tools focused on mail, packages, and scans.
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 tells when to use: 'Use this in Cursor/MCP chat when the human asks how many mailbox.bot credits are left' and even prescribes how to respond. Also explains default behavior when no dates are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_facility_conversationsARead-onlyIdempotentInspect
List your Austin HQ conversation with its unread message count and last message preview. Facility routing is automatic.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of conversations to return (1-100). Defaults to 20. | |
| offset | No | Number of conversations to skip for pagination. Defaults to 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Facility conversations plus pagination. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds behavioral context by specifying the output includes unread count and last message preview, and that facility routing is automatic, which goes beyond the annotations.
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 two concise sentences, immediately front-loaded with the action and key output details. Every word adds value, with no repetition of schema or annotation information.
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 existence of an output schema and comprehensive annotations, the description covers the essential purpose and output fields. Minor ambiguity arises from the singular 'conversation' in the description versus the plural tool name, but overall the context is sufficient for a simple list 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?
Schema coverage is 100% with both limit and offset fully described, so the baseline is 3. The description does not add further parameter-level meaning; 'Facility routing is automatic' simply negates a parameter rather than enriching existing ones.
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 a specific verb ('List'), a specific resource ('your Austin HQ conversation'), and the key returned fields ('unread message count and last message preview'). This clearly distinguishes it from sibling tools like get_facility_messages or send_facility_message, and the added note 'Facility routing is automatic' clarifies scope.
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 provides clear context that this tool handles the Austin HQ conversation automatically ('Facility routing is automatic'), implying no facility parameter is needed. It does not explicitly mention alternatives or exclusions, but the context is strong enough to guide appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inbound_forwarding_addressesARead-onlyIdempotentInspect
List the renter’s private inbound forwarding aliases on forward.mailbox.bot. These are the unique intake email addresses an operator, assistant, provider, or external agent can forward scans, PDFs, photos, provider notices, notes, and other context-aware documents to so mailbox.bot can build OCR-backed inbound context. Forwarding/emailing attachments here initiates OCR/extraction; this tool discovers the address and does not upload files directly into OCR. The alias is member-scoped, so live and sandbox agent keys for the same member resolve to the same intake address.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Private inbound forwarding email aliases. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly, idempotent, and non-destructive. The description adds meaningful context: member-scoped aliases, live/sandbox key convergence, and the fact that the tool doesn't initiate OCR/uploads itself. This goes beyond the structured annotations.
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 sentences, with the core action in the first sentence and supplementary context in the following two. Each sentence earns its place: the second clarifies the relationship to OCR, the third explains member-scoping. No redundancy or unnecessary detail.
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 has no parameters and has an output schema (so return values are covered elsewhere), the description fully explains purpose, the role of the aliases, and notable behaviors. It is complete for a simple discovery 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?
The tool has zero parameters, and schema coverage is 100% (vacuously). Per the baseline for 0 params, the description doesn't need to elaborate on parameters. It still adds useful context about what the aliases are for, which helps interpretation.
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 clearly states the tool lists private inbound forwarding aliases, using specific verb 'List' and resource 'renter’s private inbound forwarding aliases'. It further distinguishes this from uploading files into OCR and from siblings like list_inbound_mail by clarifying it's a discovery-only tool.
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 explains the context of use: forwarding attachments initiates OCR, and this tool discovers the intake address without uploading directly. This implies when to use it (before forwarding) and when not (not for direct OCR upload), but doesn't explicitly name alternative tools for those actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inbound_mailARead-onlyIdempotentInspect
List forwarded inbound mail items captured from private forwarding aliases. Default output includes compact draft_context so an LLM or external agent can reason about OCR context, reply contact candidates, deadlines, and thread linkage before generating outbound mail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of inbound items to return (1-100). | |
| offset | No | Number of inbound items to skip for pagination. | |
| status | No | Optional inbound status filter. | |
| include | No | Optional expansions. Defaults to ["drafting"]. Add ocr/lineage only when deeper provenance is needed. | |
| category | No | Optional category filter such as "Needs review" or "Loan / Mortgage". | |
| thread_id | No | Only return inbound items linked to this postal mail thread. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Forwarded inbound mail items plus pagination. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds non-redundant behavioral context by revealing that the default output includes a compact draft_context with specific elements (OCR context, reply contact candidates, deadlines, thread linkage), which helps an agent understand what the tool returns beyond the 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 concise sentences: the first states the core function, the second explains the default output's purpose. Every word earns its place with no fluff 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?
Given the tool has a rich output schema and comprehensive annotations, the description is complete enough for an agent to know what the tool does, when to use it, and what to expect in the default output. It doesn't need to explain return values or pagination, as those are covered by the output schema and input schema. A minor gap is not explicitly contrasting with related list tools.
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 100%, so the baseline is 3. The description mentions 'Default output includes compact draft_context,' which aligns with the include parameter's default, but it does not add substantial meaning to any individual parameter beyond what the schema already 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?
The description uses a specific verb ('List') and identifies the resource ('inbound mail items') with a precise qualifier ('forwarded ... captured from private forwarding aliases'), clearly differentiating it from sibling tools like list_outbound_mail and get_inbound_mail.
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 explicitly states a use case: 'so an LLM or external agent can reason about OCR context, reply contact candidates, deadlines, and thread linkage before generating outbound mail.' This gives clear context for when to use the tool, though it doesn't explicitly name alternatives or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_outbound_mailBRead-onlyIdempotentInspect
List outbound mail jobs with status tracking. Returns mail ID, recipient, mail class, status, cost, timestamps, and failure metadata. Filter by status, created_at date range, or search recipient/address/tracking/agent notes.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search recipient name, address lines, city/state/ZIP, tracking number, or agent notes. | |
| limit | No | Maximum number of mail jobs to return (1-100). Defaults to 20. | |
| offset | No | Number of mail jobs to skip for pagination. Defaults to 0. | |
| status | No | Filter by mail status. "pending_approval" = awaiting human approval, "submitted" = queued for facility, "ready" = printed and ready to mail, "mailed" = in transit, "delivered" = confirmed delivery, "failed" = failure bucket, "cancelled" = cancelled before mailing. Use carrier_delivery_failed/failure_stage to identify mailed carrier delivery failures. | |
| test_mode | No | Filter sandbox/test records. Defaults to the key environment for agent-scoped keys; member keys can pass true or false explicitly. | |
| created_after | No | Filter mail created at or after this ISO 8601 datetime or YYYY-MM-DD date. | |
| created_before | No | Filter mail created at or before this ISO 8601 datetime or YYYY-MM-DD date. Date-only values include the whole UTC day. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Outbound mail job summaries. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, non-destructive behavior. The description adds return-field and filter information, but does not disclose additional traits like default ordering, pagination behavior, or the meaning of 'failure metadata' beyond schema details. No contradiction.
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, front-loaded with the primary purpose, followed by a summary of returns and filters. No redundant or filler content.
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 gives a sufficient high-level overview for a list tool, but omits usage guidance relative to siblings and any caveats about pagination or status interpretation. Given rich schema annotations and output schema, it is minimally adequate but not exhaustive.
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 input schema provides 100% parameter coverage with detailed descriptions. The description merely paraphrases existing filter categories (status, date range, search) and adds no new semantic meaning beyond what the schema already contains.
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 clearly states the verb 'List' and the resource 'outbound mail jobs', with 'status tracking' adding specificity. It is distinct from single-item get_outbound_mail and send/cancel operations, though it does not explicitly name alternatives.
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 guidance is provided on when to use this tool versus siblings like get_outbound_mail or list_inbound_mail. The description implies listing but does not state any exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_packagesARead-onlyIdempotentInspect
List inbound mail or packages for approved real mailing address/package beta accounts with optional filters by status, carrier, and date. Returns tracking number, carrier, status, and received timestamp where available. For generally available inbound postal context, use list_inbound_mail with forwarded scans/PDFs/notes instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of packages to return (1-100). Defaults to 20. | |
| since | No | Only return packages received after this ISO 8601 date-time. | |
| offset | No | Number of packages to skip for pagination. Defaults to 0. | |
| status | No | Filter by package lifecycle status. "received" = just arrived, "stored" = in facility storage, "forwarded" = shipped to forwarding address. | |
| carrier | No | Filter by shipping carrier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Inbound package summaries. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful context beyond annotations: beta-account restriction, return fields, and the 'where available' caveat. No contradictions.
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 sentences, front-loaded with purpose and constraints. Every sentence adds value: purpose, filters, return fields, and alternative tool. No waste.
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 full schema coverage, an output schema, and annotations, the description is complete for a list tool. It covers the beta restriction, filters, return fields, and points to the alternative. No significant 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?
Schema description coverage is 100%, so the baseline is 3. The description mentions filters by status, carrier, and date, but the schema already fully documents each parameter. No additional semantic value is provided beyond what the schema offers.
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 a specific verb ('List'), resource ('inbound mail or packages'), and scope ('approved real mailing address/package beta accounts'). It distinguishes from the sibling tool list_inbound_mail by explicitly naming it as the alternative for generally available inbound postal context.
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 states when to use this tool vs alternatives: 'For generally available inbound postal context, use list_inbound_mail instead.' Also implies the intended use case (approved beta accounts) and optional filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_postal_threadsARead-onlyIdempotentInspect
List physical-mail threads that group inbound mail context, human review, and outbound sends. Use this to understand which inbound items and outbound documents belong to the same business workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of threads to return (1-100). | |
| offset | No | Number of threads to skip for pagination. | |
| status | No | Optional thread status filter. | |
| include | No | Optional expansions. Add events to include inbound/outbound timeline references. | |
| category | No | Optional category filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Postal mail workflow threads plus pagination. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the tool as read-only, idempotent, and non-destructive, so the description needn't repeat those. The description adds context about the thread grouping semantics, explaining that threads tie together inbound mail and outbound documents. It doesn't disclose specific behavior like pagination or default sorting, but those are covered by the schema and 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?
The description is two sentences, front-loaded with the action verb and resource, and both sentences contribute: one defines what the tool does, the other explains its purpose. There is no redundant or unnecessary wording.
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, 5 optional documented parameters, and an output schema, the description sufficiently covers the tool's purpose and use case. It lacks explicit alternatives/exclusions but those are not essential for a list operation with good schema support.
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?
All five parameters have descriptions in the schema (100% coverage), so the description doesn't need to elaborate on them. The description doesn't add parameter-specific meaning beyond the schema, but the baseline is 3 given the high schema coverage.
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 clearly states the tool lists physical-mail threads and explains their function of grouping inbound context, human review, and outbound sends. This distinguishes it from sibling list tools like list_inbound_mail and list_outbound_mail, which focus on individual items rather than workflow grouping.
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 provides an explicit use case: 'Use this to understand which inbound items and outbound documents belong to the same business workflow.' This gives clear context for when to choose this tool over alternatives, though it doesn't explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_mailbox_md_editAInspect
Propose changes to the renter's MAILBOX.md instructions with reasoning. The renter will see your suggestion in their dashboard and can accept, reject, or modify it. Use this when you observe patterns that could be codified into standing instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Why this change is suggested (e.g. "Observed 5 Amazon packages this week, all forwarded manually — adding auto-forward rule"). | |
| suggested_content | Yes | Full proposed MAILBOX.md content (max 10,000 chars). Must include the complete document, not just the diff. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created MAILBOX.md suggestion record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: the renter sees the suggestion in their dashboard and can accept, reject, or modify it. This clarifies that the tool does not directly apply changes but proposes them, which is not disclosed by the annotations (readOnlyHint=false, destructiveHint=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?
The description consists of two concise sentences: the first states the purpose and workflow, the second gives usage context. Every sentence earns its place with no unnecessary wordage.
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 moderate complexity, the schema covers parameters, the output schema covers return values, and the annotations cover safety profile. The description effectively explains the purpose, the proposal workflow, and when to use, making it complete for an agent to invoke 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 100% with both parameters clearly described (reason and suggested_content). The description itself does not elaborate on parameters, but the schema already provides sufficient semantics, so a baseline of 3 is appropriate.
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 clearly states the action: 'Propose changes to the renter's MAILBOX.md instructions' with a specific verb and resource. It also distinguishes from siblings by emphasizing the proposal nature (renter can accept/reject/modify), unlike direct write or rule-creation tools.
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 provides explicit guidance: 'Use this when you observe patterns that could be codified into standing instructions.' This is clear context for when to use, though it does not explicitly mention alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_expectedAInspect
Pre-register an expected inbound shipment so it is auto-matched when it arrives at the facility. Optionally specify an action to auto-execute on arrival (e.g. forward immediately, scan on receipt).
| Name | Required | Description | Default |
|---|---|---|---|
| carrier | No | Shipping carrier (e.g. "fedex", "ups", "usps"). | |
| auto_action | No | Action to auto-execute when the package arrives. | |
| description | No | Human-readable description of the shipment (e.g. "Replacement laptop from Dell"). | |
| expected_by | No | Expected arrival date in ISO 8601 format. Used for alerts if the package is late. | |
| tracking_number | No | Carrier tracking number for the expected shipment. | |
| auto_action_params | No | Parameters for the auto-action (e.g. forwarding address). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created expected shipment record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false and destructiveHint=false, but the description adds behavioral context: it creates a registration that triggers auto-matching and can execute an action on arrival. This goes beyond the basic annotation flags and warns about side effects without contradicting them.
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 two sentences, front-loaded with the core action and resource, and the second sentence clarifies an optional behavior. Every word earns its place; there is no redundancy or 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?
Given the tool's complexity (6 parameters, nested object, output schema), the description covers the essential use case and the most important optional behavior (auto-action). It does not explain prerequisites like tracking_number or expected_by, but the schema covers those, and the output schema removes the need to describe return values. Slightly more context on how matching works or when to use alternative tools would push this to 5.
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 100%, so the baseline is 3. The description adds a little value by giving examples for 'auto_action' (e.g., forward immediately, scan on receipt), but all parameters are already well-documented in the schema. It does not materially improve parameter understanding.
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 'Pre-register an expected inbound shipment,' giving a specific verb and resource. It clearly distinguishes this from siblings by focusing on inbound shipment registration and auto-matching on arrival, which no other sibling tool name suggests.
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 says when to use: when you want to pre-register an expected inbound shipment so it can be auto-matched. It also implies the optional auto-action on arrival. However, it does not explicitly mention alternatives or situations where another tool would be preferable, so it lacks the full when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_actionADestructiveInspect
Request a physical action on a package at the facility. Actions include forwarding to another address, shredding, scanning documents, holding for pickup, disposing, returning to sender, photographing, opening and scanning contents, or recording a video. Some actions (shred, dispose) are irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform. "forward" = ship to another address, "shred" = destroy (irreversible), "scan" = OCR document scan, "hold" = keep in storage, "dispose" = discard (irreversible), "return_to_sender" = send back, "photograph" = take photos, "open_and_scan" = open package and scan contents, "record_video" = video recording of package. | |
| priority | No | Processing priority. "urgent" = same-day processing, "high" = next business day, "normal" = standard queue, "low" = when convenient. | normal |
| package_id | Yes | UUID of the package to act on. | |
| parameters | No | Action-specific parameters. For "forward": { address, city, state, zip }. For "scan": { scan_type }. For "hold": { until_date }. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created facility action request record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a destructive, non-read-only operation. The description adds the specific warning that 'shred' and 'dispose' are irreversible, which is valuable context beyond the generic destructive hint. No contradiction with annotations.
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 two sentences: the first states purpose, the second lists actions and a safety warning. It is efficient, though the enumeration of actions is somewhat redundant with the schema, it aids quick understanding.
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 complexity of a multi-action tool, the description covers purpose and key safety notes, while the schema handles parameter details. It lacks mention of response behavior or async nature, but with an output schema present, this is acceptable.
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%, with detailed descriptions for every parameter, including enum meanings and nested parameter examples. The description's mention of actions and irreversibility largely mirrors schema information, adding little new parameter 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?
The description clearly states the verb 'Request' and resource 'physical action on a package at the facility', and enumerates the supported actions. However, it doesn't explicitly differentiate from sibling tool 'request_scan', which may overlap with the 'scan' action, so it lacks full sibling distinction.
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 for requesting physical actions on packages but provides no explicit guidance on when to use alternatives like 'request_scan' or 'update_action'. There is no when-not-to-use guidance or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_scanAInspect
Request document scanning (OCR + structured data extraction) for a package. The facility will scan the document and extract text, addresses, dates, and other structured data. Results are available via get_scan_results after processing.
| Name | Required | Description | Default |
|---|---|---|---|
| scan_type | No | Type of scan. "label" = shipping label only, "envelope" = exterior envelope, "document" = full document OCR, "content" = opened package contents. | document |
| package_id | Yes | UUID of the package to scan. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created scan request record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that scanning is asynchronous ('after processing') and points to the follow-up tool. This adds behavioral context beyond the annotations, which already indicate a non-read-only, non-destructive mutation. No contradictions.
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 two sentences, front-loaded with the primary purpose, and each sentence adds necessary value. It is concise without 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?
With a full input schema and an output schema, the description covers the essential workflow: requesting a scan and retrieving results via get_scan_results. It is complete for an async request 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?
Schema coverage is 100%, so the baseline is 3. The description mentions OCR and structured data extraction, which indirectly relates to scan_type, but does not add specific parameter-level meaning beyond what the schema already provides.
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 clearly states the tool's action: requesting document scanning (OCR + structured data extraction) for a package. It names the specific resource (package) and distinguishes itself from the sibling get_scan_results by indicating results are retrieved separately.
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 context: initiate a scan for a package, then use get_scan_results to obtain results. It does not explicitly exclude alternatives but provides a clear workflow. It could be improved by stating when not to use it, but the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_facility_messageAInspect
Send a message to the Austin HQ operator managing your mailbox. Facility routing is automatic. Messages appear in the shared conversation visible to you, the renter, and the facility. Optionally link the message to a specific package or action request for context.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Message text (1-5000 characters). | |
| package_id | No | Optional: link this message to a specific package for context. | |
| action_request_id | No | Optional: link this message to an action request for context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Sent facility message identifiers and body. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=false, etc. The description adds valuable behavioral context beyond these, such as automatic routing and that messages appear in a shared conversation visible to the renter, which informs the agent of potential visibility consequences. No contradictions with annotations.
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 composed of four short, purposeful sentences: purpose, routing, visibility, and optional linking. Every sentence conveys unique, necessary information without redundancy, making it highly efficient.
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 simple tool with 3 well-documented parameters and an output schema, the description covers all necessary aspects: target, automatic routing, shared visibility, and optional linking. No critical information is missing for correct invocation.
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 100%, so the baseline is 3. The description's note on optional linking to package/action request essentially restates the schema descriptions, adding no significant semantic value beyond what the schema already provides.
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 clear verb+resource: 'Send a message to the Austin HQ operator managing your mailbox.' It distinguishes from siblings by noting automatic facility routing and the shared conversation context, making it distinct from tools like send_outbound_mail or get_facility_messages.
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 gives clear context: it is for messaging the facility operator, with routing automatic and messages visible to all parties. It does not explicitly name alternatives or exclusions, but the usage scenario is easily inferred from the target and visibility statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_outbound_mailADestructiveInspect
Submit a document for printing and postal mailing by the facility. Supported formats: PDF, DOCX, JPG, PNG, TXT, CSV. The document is stored securely and printed by the facility operator. Published default pricing is $2.50 handling + $0.30/page B&W printing + carrier postage/rate; color is an additional $0.40/page, so color pages are $0.70/page before handling and postage. Plan/account overrides can apply; dry_run and cost_breakdown are authoritative. IMPORTANT: With a production key (sk_agent_), this spends the human member's prepaid mailbox.bot credits. Agents never access Stripe, card data, or Auto-Fill settings. If the signed-in human separately enabled Agent Auto-Fill, an eligible live order may trigger a bounded server-managed reload. Use dry_run=true to preview required credits before committing, or requires_approval=true to defer the credit debit until human approval. Sandbox keys (sk_agent_test_) skip credit debits and facility fulfillment. Responses include human_review with send-to address, return address, mail class, document details, preview URL when available, cost, safeguards, and next step; show that to the human before live funded sends. tracking_number is required for priority, certified, certified_return_receipt, FedEx, and UPS mail classes. USPS first_class does not include carrier tracking by default; tracking_number may be null. Optionally attach the outbound mail to inbound context with inbound_capture_id and postal_mail_thread_id so lineage stays explicit. Explicit Business mail runs are REST-only.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Print in color. Adds $0.40/page to the default $0.30/page B&W printing rate, making color pages $0.70/page before handling and postage. Account overrides can apply; cost_breakdown is authoritative. | |
| duplex | No | Request double-sided printing when operationally possible. Pricing and page_count are based on the detected or supplied document page count; use dry_run=true to preview exact cost. | |
| dry_run | No | Validate inputs and return cost breakdown without creating a record or spending credits. Use to preview required credits before committing. | |
| metadata | No | Arbitrary key-value pairs echoed in GET responses and webhooks. Recommended convention: { "workflow_id": "wf_123", "reason": "Customer cancellation", "correlation_id": "abc" }. | |
| mail_class | No | Postal or carrier service. Do not infer speed, tracking, or proof from carrier marketing names. Use first_class for ordinary lowest-cost USPS letters with no carrier tracking number by default. Use priority for faster USPS Priority Mail with USPS Tracking, but not Certified Mail proof; priority has a $15.00 published one-page floor. Use certified for USPS tracking plus proof of mailing/delivery; certified has a $20.00 published one-page floor. Use certified_return_receipt when electronic return-receipt evidence is required; certified_return_receipt has a $24.00 published one-page floor. Use fedex_ground or ups_ground for budget private-carrier tracking; fedex_express means FedEx Express Saver/third-business-day, fedex_2day and ups_2day mean second-business-day, and fedex_overnight or ups_next_day mean next-business-day. FedEx express classes use the Standard List document baseline from the configured fulfillment origin unless FedEx One Rate is explicitly configured operationally. | first_class |
| package_id | No | Link this mail to an inbound package (e.g. replying to received correspondence). | |
| page_count | No | Explicit page count for non-PDF documents when exact pagination is known. When supplied for DOCX, TXT, or CSV, it overrides local detection and makes pricing deterministic. | |
| return_zip | No | Return address ZIP code. Defaults to member profile if omitted. | |
| agent_notes | No | Instructions for the facility operator (e.g. "Time-sensitive — mail today"). | |
| return_city | No | Return address city. Defaults to member profile if omitted. | |
| return_name | No | Return address name. Defaults to the member's profile name if omitted. | |
| return_line1 | No | Return address line 1. Defaults to member profile if omitted. | |
| return_line2 | No | Return address line 2 (suite, unit, etc.). | |
| return_state | No | Return address state (2-letter code). Defaults to member profile if omitted. | |
| recipient_zip | Yes | 5 or 5+4 digit ZIP code (e.g. "90210" or "90210-1234"). | |
| max_cost_cents | No | Cost cap in cents. If the calculated cost exceeds this, the request is rejected with 422 before credits are spent. Prevents accidental expensive mailings. | |
| recipient_city | Yes | Recipient city. | |
| recipient_name | No | Person name of the mail recipient. Optional when recipient_company is provided. | |
| return_company | No | Optional company or organization line for the return address. | |
| document_base64 | Yes | Base64-encoded document file. Supported formats: PDF, DOCX, JPG, PNG, TXT, CSV. Max 10MB decoded. | |
| recipient_line1 | Yes | Street address line 1 of the recipient. | |
| recipient_line2 | No | Street address line 2 (apartment, suite, unit, etc.). | |
| recipient_state | Yes | 2-letter US state code (e.g. CA, NY, TX). | |
| document_filename | No | Original filename with extension (e.g. "letter.docx"). Required for reliable non-PDF format detection. | |
| recipient_company | No | Company or organization line for the recipient. Optional when recipient_name is provided. | |
| recipient_country | No | ISO 3166-1 alpha-2 country code. Defaults to "US". | US |
| requires_approval | No | If true, the renter must approve in their dashboard before the mail is printed and sent. | |
| inbound_capture_id | No | Optional inbound mail item this outbound piece is replying to. Recommended when drafting from OCR/forwarded-mail context. | |
| mailbox_md_version | Yes | Your current MAILBOX.md version (from get_mailbox_md). Required for sync verification. | |
| postal_mail_thread_id | No | Optional physical-mail thread to attach this outbound mail to. Lets agents keep inbound and outbound activity in one durable workflow. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Submitted outbound mail job or dry-run cost preview. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by disclosing that the tool spends human member credits, never accesses Stripe/card data/Auto-Fill settings, may trigger a bounded server-managed reload, skips fulfillment with sandbox keys, and returns a human_review object that should be shown before live funded sends. This materially enriches the risk profile already hinted by destructiveHint=true, and there is no contradiction with annotations.
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 front-loaded with a clear purpose statement and organized into critical warnings about pricing, credits, and safety. It is long, but the tool has 30 parameters and financially hazardous side effects, so the length is justified. Minor redundancy with the already-rich schema descriptions prevents a perfect 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?
Given the tool's complexity, the description is remarkably complete: it covers formats, pricing, credit debits, sandbox behavior, human approval, tracking requirements, lineage attachment, and REST-only constraints. Since an output schema exists, the description does not need to detail return values, and it fully equips an agent to use the tool safely.
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 input schema has 100% parameter coverage with detailed descriptions for every parameter, so the baseline is 3. The tool description adds some useful cross-cutting context (pricing, dry_run/cost_breakdown authority, tracking_number requirements), but it largely restates or duplicates information already present in the schema, rather than substantially extending parameter-level meaning.
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 action, 'Submit a document for printing and postal mailing by the facility,' and immediately lists supported formats. This clearly identifies the tool as the real send operation and differentiates it from sibling tools like get_outbound_mail, cancel_outbound_mail, or create_test_outbound_mail by focusing on live fulfillment and credit-spending behavior.
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 provides rich context for when to use dry_run=true versus requires_approval=true, explains production versus sandbox key behavior, and warns about credit debits. However, it does not explicitly name sibling alternatives (e.g., create_test_outbound_mail) for test scenarios, instead implying sandbox keys can be used with this tool, so the 'when vs. alternative' guidance is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_actionAIdempotentInspect
Push notes, structured data, or a clarification response to an existing action request. Use this to add agent reasoning, attach extracted data, or respond when the facility asks for clarification. Requires mailbox_md_version to prove your MAILBOX.md instructions are in sync.
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes | The action request ID to update. | |
| agent_data | No | Structured data to attach (e.g. OCR results, extracted fields, classification labels). | |
| agent_notes | No | Free-text notes from the agent (e.g. "Forwarding per standing rule #3"). | |
| decision_context | No | Link this decision to a specific MAILBOX.md instruction for auditability. | |
| mailbox_md_version | Yes | Your current MAILBOX.md version (from get_mailbox_md). Required for sync verification. | |
| respond_to_clarification | No | Response text when action status is needs_clarification. Providing this auto-resumes the action to in_progress. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Updated facility action request record. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a meaningful non-obvious prerequisite: 'Requires mailbox_md_version to prove your MAILBOX.md instructions are in sync.' Annotations already indicate mutating but non-destructive behavior, and the description does not contradict them. It does not cover append-vs-replace semantics, but the added prerequisite gives useful context beyond annotations.
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 two sentences: a purpose statement with the three supported payload types, a direct 'Use this to' usage clause, and a one-line prerequisite. Every sentence earns its place, with no redundancy or 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?
The description covers the primary interaction patterns and the key prerequisite, which is sufficient for a tool with moderate parameter complexity and a provided output schema. It could mention that respond_to_clarification auto-resumes the action, but the schema already documents that behavior, so the description remains adequately complete.
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% with detailed descriptions for every parameter, so the baseline applies. The description mentions attaching 'structured data' and 'notes' and 'clarification response', which map to agent_data, agent_notes, and respond_to_clarification, but it adds no parameter-level details beyond what the schema already provides.
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?
Description opens with a specific action verb 'Push' and identifies the resource as 'an existing action request', immediately differentiating from request_action. It enumerates concrete update types (notes, structured data, clarification response) and states the intent ('add agent reasoning, attach extracted data, or respond').
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 use cases are provided: 'Use this to add agent reasoning, attach extracted data, or respond when the facility asks for clarification.' It clearly scopes the tool's intended triggers but does not explicitly state when to prefer an alternative sibling tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_webhookAIdempotentInspect
Configure webhook endpoint URL and event subscriptions for real-time notifications. Events include package.received, package.status_changed, action.completed, mail.status_changed, and more. The endpoint must use HTTPS and respond with 2xx within 10 seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | No | Set to false to pause webhook delivery without removing the URL. | |
| event_types | No | Array of event types to subscribe to (e.g. ["package.received", "mail.status_changed"]). Empty array disables all events. | |
| webhook_url | No | HTTPS URL to receive webhook POST requests. Must respond with 2xx within 10 seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Webhook configuration status. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds the HTTPS and 10-second response requirement, which is useful context about endpoint expectations, but it does not describe side effects of updates, such as whether existing subscriptions are replaced or merged. With annotations present, this adds some value but not rich behavioral detail.
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 two sentences, front-loaded with the primary purpose, and every word earns its place. It is concise without wasteful 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?
Given the tool has a rich schema (all parameters described, 0 required) and an output schema exists (so return values are presumably documented elsewhere), the description covers the core purpose, event examples, and endpoint constraints. It does not explain partial-update semantics, but the idempotent annotation and optional parameters imply this. The description is adequate for a relatively simple configuration 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?
The input schema has 100% parameter description coverage, so parameters are already well-documented. The description adds a few example event types and reiterates the HTTPS/timeout constraint, but it does not provide significant new semantic meaning beyond the schema. Baseline 3 is appropriate.
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 clearly states the tool configures webhook endpoint URL and event subscriptions for real-time notifications, using specific verbs and resources. It distinguishes itself from all sibling tools, as it is the only webhook-related tool listed.
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 'for real-time notifications' provides clear context for when to use this tool, and the list of example events gives a sense of scope. However, it does not explicitly mention when not to use it or describe alternative approaches, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Flicense-qualityCmaintenanceEnables AI assistants to prepare, price, review, pay for, and send real physical letters and postcards via a hosted MCP server.
- Alicense-qualityBmaintenanceHosted remote MCP server that lets AI agents compose, price, send, and track real physical letters worldwide.MIT
- Alicense-qualityBmaintenanceAn open-source MCP server for sending physical mail (letters, postcards, certified mail) directly from AI agents, with per-piece payment and no account signup needed.MIT
- AlicenseAqualityBmaintenanceOfficial mailbox.bot MCP server for AI agents. Send letters, certified mail, postcards, and receive scanned inbound physical mail with sandbox keys, approval controls, tracking, and webhooks.29722MIT