Skip to main content
Glama

Server Details

Give AI assistants hands: send real USPS letters via MCP.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
3LGroupTechnology/3lt-letter-mail
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

The fax flow (create_fax_draft → approve_fax → send_fax → get_fax_status) and letter flow (draft_letter → request_send → send_status) are largely distinct and well described. Minor confusion risk exists between send_fax and request_send (both 'send' actions for different media) and between the two status tools get_fax_status and send_status, but descriptions clarify the boundaries.

Naming Consistency3/5

All names are snake_case verb_noun, but the parallel 'create a draft' operation is named inconsistently (draft_letter vs create_fax_draft), and request_send breaks the noun pattern with a verb_verb form. Verbs vary widely (approve, create, draft, get, request, send), making the set readable but not predictably patterned.

Tool Count5/5

Seven tools is well-scoped for a fax-plus-letter mailing service: four cover the fax lifecycle and three cover the letter request path. Each tool earns its place with no redundant or filler operations.

Completeness4/5

Both domains have create, approval/request, send, and status coverage, forming complete happy-path lifecycles. Minor gaps exist—no cancel/delete of drafts or pending requests, no listing of prior faxes/letters, and no retry for FAILED sends—but core workflows are workable.

Available Tools

7 tools
approve_faxApprove FaxAInspect

Approve a fax DRAFT so it can be transmitted. The content is re-screened at approval time. Only the key that created the fax can approve it. Nothing is transmitted by this call — send_fax does that.

NameRequiredDescriptionDefault
fax_idYesthe fax_id returned by create_fax_draft.
api_keyYesyour 3L-Group Technology API key (lms_...).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the draft is re-screened at approval time, that approval is bound to the creating key (an authorization constraint), and that the call is a pure state transition with no transmission. It stops short of stating reversibility or what the approval result reports.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the core action and effect, then the screening, authorization, and scope constraints in descending priority. Every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description covers the key operational facts: what changes, who may call it, and what it does not do. Only minor gaps remain around failure modes and the approved/terminal state.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented there, including that fax_id comes from create_fax_draft, so baseline 3 applies. The description adds no parameter-level detail beyond that, but nothing is left ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Approve a fax DRAFT so it can be transmitted') and immediately scopes the effect. It distinguishes itself from sibling send_fax ('Nothing is transmitted by this call') and implies the create_fax_draft relationship, so an agent can tell it apart without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative (send_fax does the transmitting) and states a hard prerequisite ('Only the key that created the fax can approve it'). It doesn't cover the negative case, e.g. what happens if the draft was already approved or rejected, but the routing guidance is clear.

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

create_fax_draftCreate Fax DraftAInspect

Create a fax DRAFT: validates the recipient number, counts the PDF's pages, screens its text, and returns a price quote (Phaxio per-page cost x pages + the flat $1.00 service fee). This NEVER transmits anything — call approve_fax, then send_fax.

NameRequiredDescriptionDefault
api_keyYesyour 3L-Group Technology API key (lms_...).
pdf_pathYespath to the PDF file on the server to fax.
to_numberYesrecipient fax number — 10-digit US number or a full E.164 number starting with +.
descriptionNooptional label for your own records.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does much of it well: it discloses the side-effect profile ('NEVER transmits anything'), the read-like validation/screening steps, and the exact cost model (per-page cost x pages + flat $1.00 fee). It omits auth scope beyond the api_key param and any rate/latency notes, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences. The verb+resource is front-loaded, followed by the behavior summary and the workflow handoff, with no wasted clauses.

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

Completeness5/5

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

An output schema exists so return values need not be explained, yet the description still summarizes the quote. Purpose, non-destructive behavior, and workflow routing are all covered for a 4-param tool with full schema coverage.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters (api_key, to_number, pdf_path, description). The description implies recipient validation and PDF page counting but adds no syntax or format detail beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Create a fax DRAFT') and enumerates the exact work performed — recipient validation, page counting, text screening, and a price quote. It clearly distinguishes itself from the transmitting siblings by stating 'This NEVER transmits anything,' so an agent can tell it apart from send_fax without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit workflow context: 'call approve_fax, then send_fax,' placing this tool as the first step and routing the agent to the correct successor tools. It doesn't spell out when-not-to-use beyond the non-transmission distinction, but the sequencing guidance is clear and actionable.

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

draft_letterDraft LetterAInspect

Create a letter DRAFT: verifies the recipient address with PostGrid, screens content, and returns a price quote. This NEVER mails anything.

Pass EITHER html (letter body as an HTML string) OR pdf_path (path to a PDF file on the server). PDF text is extracted for screening; if extraction fails the draft is kept but flagged needs_review.

NameRequiredDescriptionDefault
toYesrecipient address dict with name, address_line1, address_city, address_state, address_zip (US).
htmlNoletter body as an HTML string (use this OR pdf_path).
colorNoTrue for color printing, False for black & white.
api_keyYesyour 3L-Group Technology API key (lms_...).
pdf_pathNoserver-local path to a PDF to mail instead of html.
quantityNonumber of identical letters (10+ gets the bulk rate).
certifiedNoOPT-IN ONLY — True for USPS Certified Mail with Electronic Receipt (tracked, signature on delivery). Defaults to False, which sends standard First Class mail. Only set True when the customer explicitly asked for certified mail: it costs significantly more (PostGrid's certified rate + the flat $1.00 service fee, roughly $11 per letter). Never default this to True.
descriptionNooptional label for your own records.
from_addressYessender address dict, same shape as `to`.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses PostGrid address verification, content screening, price-quote return, the never-mails guarantee, and the needs_review fallback when PDF text extraction fails. It omits auth/permission requirements and any rate or cost caveats beyond what the schema's certified description covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs, front-loaded with the core behavior and the critical never-mails constraint. No filler, though the PDF extraction sentence is a slight tangent from the main draft-purpose statement.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and the description covers the draft workflow, screening, and failure flagging well. It could be fuller on what the draft object/quote contains or the lifecycle toward request_send, but it is largely complete for a 9-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all nine parameters are already documented in the schema, including the html-OR-pdf_path exclusivity. The description restates that mutual exclusivity and adds the PDF-extraction screening consequence, but mostly reinforces schema content rather than adding new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a letter DRAFT') and immediately names the side effects it performs (address verification, content screening, price quote). The emphatic 'This NEVER mails anything' distinguishes it from the send-oriented siblings request_send and send_status without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly explains the html-vs-pdf_path choice and the never-mails scope, which implies this is the pre-send step. It stops short of explicitly naming request_send as the follow-up action, so the routing to alternatives is implied rather than stated.

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

get_fax_statusGet Fax StatusAInspect

Check a fax: lifecycle status (DRAFT/APPROVED/SENT/FAILED), page count, quote, and — once sent — the live delivery status from Phaxio.

NameRequiredDescriptionDefault
fax_idYesthe fax_id returned by create_fax_draft.
api_keyYesyour 3L-Group Technology API key (lms_...).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the lifecycle stages and that live delivery comes from Phaxio once sent, but it does not explicitly state that the operation is read-only, nor does it cover authentication expectations beyond the schema's api_key parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single, front-loaded sentence that lists the key returned information without filler. Every clause earns its place, and the most important concept (what is checked) comes first.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and it covers the tool's scope and data sources adequately. The only gap is the lack of explicit usage framing relative to siblings, which leaves it slightly short of fully self-contained.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (fax_id, api_key) are already well documented in the schema. The description adds no extra meaning about parameter format, sourcing, or constraints beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ("Check") and resource ("a fax"), and enumerates exactly what is returned: lifecycle status values, page count, quote, and delivery status. This clearly distinguishes it from the write-oriented siblings (create_fax_draft, send_fax, approve_fax) without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the function itself (check a fax's status), and the phrase "once sent" hints at when delivery status is available. However, the description never explicitly says when to use this tool versus related siblings like send_status, nor does it state prerequisites such as needing a fax_id from create_fax_draft.

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

request_sendRequest SendAInspect

Request that a draft be mailed.

approval-tier keys: creates a PENDING request and returns a one-tap Allow/Deny approval_url for the human. Nothing is mailed until Allow. on_command keys: may auto-send inside guardrails (spend caps, content screening, anomaly detection); anything outside them stays PENDING.

NameRequiredDescriptionDefault
api_keyYesyour 3L-Group Technology API key (lms_...).
draft_idYesthe draft_id returned by draft_letter.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses the PENDING state, the returned one-tap approval_url, that nothing is mailed until Allow, and that on_command keys may auto-send within guardrails. It leaves out edge behavior such as denials, expiry, or repeated calls on the same draft.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in one sentence, followed by a compact tier-keyed breakdown. Every clause carries information; only the formatting is slightly unusual for a tool description.

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

Completeness4/5

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

An output schema exists, so the approval_url and status fields need not be re-explained, and the remaining non-obvious behavior (pending vs auto-send) is fully covered. Only failure/retry semantics are absent, which is a minor gap for a two-parameter submission tool.

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

Parameters3/5

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

Schema description coverage is 100% (api_key format lms_..., draft_id origin from draft_letter), so the schema already documents both parameters. The description adds no format, constraint, or example beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: requesting that a draft be mailed, scoped to a draft_id. It implicitly separates itself from send_status (this initiates, that reports), but never names its siblings, so the differentiation must be inferred.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what happens under two key tiers, which is behavioral rather than selection guidance. It gives no explicit when-to-use-this-vs-draft_letter/send_status rule or prerequisite ordering, so usage is only implied.

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

send_faxSend FaxAInspect

Transmit an APPROVED fax via Phaxio. Refuses drafts that were never approved and faxes that were already sent — a fax can be transmitted exactly once.

NameRequiredDescriptionDefault
fax_idYesthe fax_id returned by create_fax_draft.
api_keyYesyour 3L-Group Technology API key (lms_...).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the third-party provider (Phaxio), the approval precondition, and exactly-once/idempotent transmission semantics. It stops short of noting side effects such as cost or what happens on partial failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the action is front-loaded, followed by the refusal constraints. Every clause carries new information, with no restating of the title or schema.

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

Completeness4/5

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

For a two-parameter mutation tool with an output schema, the description covers the key behavioral contract (approval gate, single transmission). Return values are handled by the output schema, so nothing critical is missing, though operational side effects are unmentioned.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, and the description adds no parameter-level detail beyond what the schema already states (fax_id provenance, api_key format). Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Transmit an APPROVED fax via Phaxio') and scopes it to approved faxes only. It implicitly distinguishes itself from create_fax_draft/approve_fax by the approval precondition, but never names those siblings explicitly, so an agent must infer the workflow ordering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The refusal conditions ('refuses drafts that were never approved and faxes that were already sent') effectively communicate when not to use it. However, it does not name the alternative tools (approve_fax, create_fax_draft) an agent should call first, leaving the routing implicit.

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

send_statusSend StatusAInspect

Check a send request: status (PENDING/SENT/REJECTED/FAILED), the key's trust tier and tier decision, approval state (+approval_url while pending), and billing state (Stripe charge id when billed).

NameRequiredDescriptionDefault
api_keyYesyour 3L-Group Technology API key (lms_...).
request_idYesthe request_id returned by request_send.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the state machine (PENDING/SENT/REJECTED/FAILED), that tier and tier decision are surfaced, that approval_url appears only while pending, and that a Stripe charge id appears only when billed. It does not mention auth requirements beyond the schema's api_key, rate limits, or read-only/irreversibility guarantees, so it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence, front-loaded with the verb and the primary status facet, with the secondary facets trailing. Every clause earns its place, though the nested parentheticals make it slightly heavy to parse.

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

Completeness4/5

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

An output schema exists, so the enumerated return fields are partly redundant, but they usefully aid tool selection. The remaining gap is the absence of usage guidance for a polling tool and any note on auth or error behavior; for a 2-required-param read tool this is nearly complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description adds modest context by framing api_key as 'the key's trust tier' and confirming request_id is the send request being queried, but no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Check') and resource ('a send request') and enumerates the exact facets returned: status enum, trust tier decision, approval state, and billing state. The purpose is unambiguous, though it never names the siblings (request_send, draft_letter) or explains how it relates to them, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement, but enumerating PENDING/SENT/REJECTED/FAILED plus an approval_url 'while pending' strongly implies the polling-after-request_send workflow. Usage is inferable rather than stated, which fits a 3.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Addedapprove_fax
    • Addedcreate_fax_draft
    • Addedget_fax_status
    • Addedsend_fax
  2. 3 tool updates
    • First observeddraft_letter
    • First observedrequest_send
    • First observedsend_status

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    An 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
  • A
    license
    A
    quality
    D
    maintenance
    Enables any MCP-compatible AI agent to send physical handwritten postcards via USPS with a single tool call, handling image upload, card creation, robotic handwriting, and mailing.
    2
    26 npm
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.