Oh Fax
Server Details
Outbound US/CA fax for agents: quote PDF, pay via MPP, get delivery receipt.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: quoting, sending, checking status, and retrieving proof of delivery. Status and receipt are related but descriptions make the difference clear—status is current-state monitoring while receipt is final proof.
All tools follow a consistent verb_noun pattern: quote_fax, send_fax, get_fax_status, get_fax_receipt. The naming is predictable and matches the workflow order.
Four tools is well-scoped for a fax service: quote, send, status, and receipt cover the essential user journey without unnecessary bloat.
The core fax lifecycle is covered end-to-end, from pricing to proof of delivery. Minor gaps like cancellation or retry actions are absent, but the stated purpose is served without dead ends.
Available Tools
4 toolsget_fax_receiptGet fax receiptARead-onlyInspect
Verifiable delivery receipt for a completed fax. Available once the fax has reached a final state. Use this to prove the workflow finished.
| Name | Required | Description | Default |
|---|---|---|---|
| fax_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a safe read operation. The description adds useful behavioral information: the receipt is only available once the fax reaches a final state, and its purpose is verification. 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?
Three short, focused sentences with no filler. The core function is front-loaded, the availability constraint is stated, and the practical use case is given immediately.
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 single-parameter read-only tool, the description is nearly complete: it explains what to expect, when it is available, and why to call it. It could mention behavior when the fax is not in a final state, but this is a minor gap given the 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?
There is only one parameter, fax_id, and it is self-explanatory. However, schema description coverage is 0% and the description does not explicitly explain that fax_id identifies the fax for which the receipt is requested, though it implicitly refers to a completed fax.
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 identifies the tool's resource: a verifiable delivery receipt for a completed fax. It differentiates from siblings like get_fax_status, quote_fax, and send_fax by emphasizing proof of completed delivery rather than current status or sending a fax.
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 usage context: use it only after the fax has reached a final state, and use it to prove the workflow finished. It does not explicitly name alternatives, but the context makes the intended timing clear relative to get_fax_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fax_statusCheck fax statusARead-onlyInspect
Current delivery state of a fax: awaiting_payment, paid, submitted, sending, delivered, or failed. Failed faxes include a reason you can act on.
| Name | Required | Description | Default |
|---|---|---|---|
| fax_id | Yes |
TDQS
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 genuine behavioral detail by listing possible return states and noting that failed faxes include a reason the agent can act on, which goes beyond what the annotations 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?
One tightly written sentence front-loads the core behavior, then packs the state list and the actionable failed-fax note without wasted words. Every clause contributes useful 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 one-parameter, read-only status lookup, the description gives the agent the essential return vocabulary and the failure-reason behavior. It is slightly thin on the exact response envelope, but no output schema exists and the expected values are clearly named.
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 0%, and the description does not explain how to obtain fax_id or that it is the identifier returned by send_fax. The phrase 'of a fax' merely echoes what the property name already implies, so the description adds little 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 title 'Check fax status' and the opening phrase 'Current delivery state of a fax' clearly identify the resource and the operation. The enumeration of concrete states (awaiting_payment, paid, submitted, sending, delivered, or failed) makes it easy to distinguish this status tool from get_fax_receipt, quote_fax, and send_fax.
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 this tool is for monitoring delivery and investigating failures, especially through the actionable failed-reason detail, but it never explicitly says when to prefer it over get_fax_receipt or other siblings. The usage context is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_faxQuote a faxARead-onlyInspect
Price a fax before committing to anything. Validates the destination and the document, counts pages, and returns an exact total plus a payment link. Free, and sends nothing. Always call this before send_fax.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination fax number. US and Canada only. | |
| document_url | No | Publicly reachable URL of a PDF. | |
| document_base64 | No | Base64-encoded PDF, as an alternative to document_url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and non-destructive annotations, the description adds important behavioral context: it sends nothing, is free, validates the destination and document, and counts pages. This helps the agent understand side effects and preconditions without guessing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler. The core purpose is stated first, followed by concrete behavior and an explicit usage rule.
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 quote tool with read-only annotations and fully documented parameters, this description covers what the tool does, what it returns, that it has no side effects, and when it should be called. 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 schema already documents all three parameters. The description mentions validating 'the destination and the document,' which loosely maps to the parameters, but it does not add meaningful semantics 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 opens with a specific verb and resource — 'Price a fax before committing to anything' — and clarifies the tool's exact job: validate destination/document, count pages, return an exact total plus a payment link. This clearly distinguishes quote_fax from send_fax and the status/receipt siblings.
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 'Always call this before send_fax,' giving the agent a direct rule for when to use this tool. It also frames the tool as a pre-commitment step, which implies the alternative is the actual sending operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_faxSend a fax (costs money)ADestructiveIdempotentInspect
Returns the authorization instructions for sending a previously quoted fax. THIS ACTION COSTS MONEY AND CANNOT BE UNDONE: paying the returned link transmits a real document to a real fax machine. This tool itself does not charge you — it returns the exact price and a payment link, and the fax is only sent once you deliberately pay that link. Confirm the cost is acceptable before paying.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | A quote_id from quote_fax. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds critical safety context: the action costs money, cannot be undone, only happens after deliberately paying a returned link, and the tool itself does not charge. This is rich behavioral disclosure with no contradiction to 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 sentences with the key function front-loaded. The cost warning is repeated across sentences, but this is deliberate emphasis for a risky action rather than unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers prerequisites (a prior quote), what the tool returns (price and payment link), and what happens next (fax sent only after paying). Nothing needed for correct invocation or risk assessment 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?
The single parameter quote_id is already fully described in the schema with 'A quote_id from quote_fax.' The description reinforces the 'previously quoted' requirement but adds no new format or semantic details beyond the schema, so baseline 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 states a specific verb ('returns') and resource ('authorization instructions for sending a previously quoted fax'), and immediately clarifies that the tool does not actually send the fax. This distinguishes it from the title and from siblings like quote_fax.
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 scopes usage to a previously quoted faxage and the schema requires a quote_id from quote_fax, so an agent knows this tool is used after quote_fax. It does not explicitly name alternative tools, but the sequencing is clear enough.
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.
4 tool updates
- First observed
get_fax_receipt - First observed
get_fax_status - First observed
quote_fax - First observed
send_fax
Related MCP Connectors
Print and mail physical documents in the US via USPS, with quotes, agent payment and tracking.
Send individual transactional faxes with prepaid credit, delivery status, and safeguards.
Send free or paid faxes to US/Canada from Claude, ChatGPT, and other AI agents.
Send a fax from Claude, ChatGPT, or Cursor. Upload a PDF, pay, get delivery status.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceGenerates PDF documents from HTML or Markdown content with customizable page size, margins, and orientation, supporting pay-per-call payments via x402.MIT
- FlicenseAqualityBmaintenanceEnables agents to price, send, and track encrypted file transfers, with files chunked, encrypted, and hashed locally before any network relay, and to retrieve signed collection receipts. It supports prepaid credit pools and gives agents a privacy-first transfer capability within their own trust domain.1-
- AlicenseNot gradedqualityAmaintenanceEnables agents to generate, track, and manage invoices via MCP tools, with CLI support for payment tracking and earnings summaries.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that lets AI agents create reviewable physical mail drafts, validate quotes, and pay for postage via MPP or x402 protocols.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.