Skip to main content
Glama

Faxbeep

Server Details

Test fax numbers for AI agents. Send a test fax or scan-to-email, then read what Faxbeep received.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
faxbeep/faxbeep-mcp
GitHub Stars
0
Server Listing
Faxbeep MCP Server
ChatGPT
–
Claude
–

TDQS

A4.7/5.0

Scored across 3 tools

Disambiguation5/5

The three tools have clearly distinct roles: get_test_numbers returns dialing/email limits, list_test_faxes returns recent public faxes, and get_test_fax retrieves one fax by slug or URL. Although both get_test_numbers and list_test_faxes return server time, their primary purposes are unambiguous and unlikely to be confused.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern: get_test_fax, get_test_numbers, and list_test_faxes. The get/list distinction maps cleanly to single-item retrieval versus collection listing.

Tool Count5/5

Three tools are well matched to this narrow test-fax domain. Each tool earns its place: one for setup/numbers, one for polling recent faxes, and one for fetching a specific fax.

Completeness5/5

The core workflow is fully covered: discover test numbers and limits, send a test, poll the public list, and fetch a specific fax or sample. There are no obvious missing CRUD or lifecycle operations for a receive-only public test fax service.

Available Tools

3 tools
get_test_faxGet a test faxA
Read-onlyIdempotent
Inspect

Get one test fax by its slug (fax_ and 8 characters from 0-9 and a-f, for example fax_1a2b3c4d) or by the URL of its page on faxbeep.com (view_url, with or without a language prefix such as /de). The result is the fax object, the same as an item of list_test_faxes, and after it an image of page 1 when one can be read. A client can draw that image very small. In a chat that shows images, also show thumbnail_url as an image in your answer. Give view_url for the full page.

A fax that is not found gives an error result: a new fax can take a while to appear, and a fax that is still processing is not found yet. A fax that was removed, by request or after 30 days, gives the error result "This fax was removed, or it is older than 30 days." Its files are deleted, so it cannot be read again.

For a sample answer, use fax_example (a published sample fax) or fax_example_removed (the answer for a removed fax).

NameRequiredDescriptionDefault
faxYesThe slug of the fax (for example fax_1a2b3c4d), or the URL of its page on faxbeep.com (view_url).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial behavior the annotations cannot: the result is the fax object plus a page-1 image when readable, thumbnail_url should be rendered in image-capable chats, and view_url gives the full page. It also documents failure modes precisely — not-found for a new or still-processing fax, and a specific removal message with 30-day retention and deleted files.

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 identification rule and return shape are front-loaded, with error cases and sample tools following in a logical order. A few sentences are expendable, notably 'A client can draw that image very small,' which reads as an aside rather than actionable instruction.

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?

For a single-parameter read tool with no output schema, the description covers everything an agent needs: identifier formats, the shape of a successful result (object plus image), rendering guidance for thumbnail_url and view_url, and the distinct error outcomes for pending versus removed faxes. Nothing material is left to inference.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns credit above it by specifying the slug pattern ('fax_' plus 8 characters from 0-9 and a-f) and noting that view_url may carry a language prefix such as /de. Those details are not in the schema's parameter text and directly reduce invocation errors.

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 ('Get one test fax') and immediately pins down the two accepted identifier forms with a concrete example (fax_1a2b3c4d) and the URL form. It also relates the return value to list_test_faxes ('the same as an item of list_test_faxes'), which lets an agent distinguish it from the listing sibling 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?

Gives clear context: fetch a single fax by slug or view_url, and use fax_example / fax_example_removed when a sample answer is wanted. That is real routing guidance, but there is no explicit statement of when to prefer list_test_faxes over this tool (e.g. 'to enumerate, use list_test_faxes').

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

get_test_numbersGet the test numbersA
Read-onlyIdempotent
Inspect

Get the Faxbeep test fax numbers, the test email addresses and the limits. Call this first, before the person sends a test.

Each item of "numbers" is a test fax number: "local_format" is the number to dial inside its country, "international_format" from any other country. The person sends a fax to it from a fax machine or a fax service. Each item of "email_addresses" takes an email with one PDF, TIFF or JPEG attachment, for a scan-to-email or Internet fax test. "email_addresses" is left out while the email test is off.

Every test that Faxbeep receives is public on faxbeep.com for 30 days. Tell the person not to send a private document. "limits" has the limits of the email test: "email_max_message_bytes" is the size of the whole email, and email encoding adds about a third, so the attachment can be about three quarters of it. "troubleshooting_url" is the docs page with each refusal message of the email test and its fix.

"now" is the server time. Use it as "since" of list_test_faxes: call this tool, or take "now" from your last result, just before the person sends the test. Do not use your own clock.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, but the description adds substantive context the annotations cannot: every received test is public on faxbeep.com for 30 days (with a privacy warning to relay), the email test may be disabled, and server time must be used rather than the agent's own clock.

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?

Front-loads the action and the 'call this first' directive, and nearly every sentence carries operational detail. It is dense and slightly sprawling, with field explanations interleaved with warnings rather than cleanly grouped, but little is wasted.

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?

For a zero-parameter tool with no output schema, the description supplies everything needed: what is returned, how to interpret each field, when data may be missing, and the privacy constraint on the person's test document.

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

Parameters4/5

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

Zero parameters, so the schema baseline is 4. The description goes further and defines the undocumented return fields (local_format vs international_format, email_max_message_bytes semantics with ~1/3 encoding overhead, troubleshooting_url), which matters because no output schema exists.

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 ('Get the Faxbeep test fax numbers, the test email addresses and the limits') and enumerates the payload sections. It also distinguishes itself operationally from list_test_faxes by supplying the 'now' value used as that tool's 'since'.

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

Usage Guidelines5/5

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

Explicit ordering instruction: 'Call this first, before the person sends a test.' It also routes the agent onward ('Use it as "since" of list_test_faxes') and explains the condition under which 'email_addresses' is absent (email test off).

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

list_test_faxesList received test faxesA
Read-onlyIdempotent
Inspect

List the test faxes that Faxbeep received and published, newest first. The list is public and holds the tests of everyone. Each item of "faxes" is a fax object: slug, source ("phone" or "email"), from (the sender, masked as on faxbeep.com, or null), received_at, page_count, file_size, pdf_url, thumbnail_url and view_url (the page of the fax on faxbeep.com). In the result, "since" is the start time that was used, and "now" is the server time.

The result holds at most "limit" faxes (20 when not given), newest first, with no paging. When "faxes" has "limit" items, there can be more: narrow the list with from, page_count or a since closer to the test.

Set "since" to the "now" value that get_test_numbers or list_test_faxes returned just before the person sent the test, and keep it fixed while you poll. Do not use your own clock. Do not move since to the newest received_at: a long fax can appear after a newer, shorter one. Without "since", the list covers the last 24 hours.

A match by time, sender or page count narrows the candidates. It does not prove that a fax is the person's, because other people send tests at the same time. Show the person the view_url so they can check the page. In a chat that shows images, also show thumbnail_url as an image in your answer.

An empty list is a normal answer while a fax is on its way. A new fax usually appears within a minute after the call ends or the email is sent; a few take longer. Wait about 30 seconds between calls, and stop after about 10 minutes. A fax is public for 30 days, then it is removed.

For a sample answer, set from to FAXBEEP-EXAMPLE: the result is the sample fax fax_example, whatever since says. The sample has a fixed date in the past, older than 30 days, and it stays available.

NameRequiredDescriptionDefault
fromNoOnly faxes from this sender: the full fax number (for example +15555550123) or station ID of the sending machine, or the sender address of an email test. Not the masked value of a result. The whole value must match; case does not matter.
limitNoThe most faxes to return, from 1 to 100. Default: 20.
sinceNoOnly faxes received after this time, in ISO 8601 with an offset. Use the "now" value of get_test_numbers or of a list_test_faxes result, taken just before the person sends the test, not your own clock. Default: 24 hours ago. A fax older than 30 days is not in the list.
page_countNoOnly faxes with this number of pages.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, non-destructive and non-open-world, yet the description adds real behavior: results are capped at "limit" with no paging, an empty list is a normal transient state, new faxes typically appear within a minute but sometimes longer, and entries are public for 30 days before removal. It also warns that a time/sender/page-count match narrows but does not prove ownership.

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?

Front-loads what the tool returns, then field-by-field output shape, then polling rules, then edge cases — a sensible order with almost no filler. It is long and repeats "newest first" and re-states the 20-item default that the schema already carries, which keeps it from a 5.

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?

With no output schema, the description carries the full burden and does it: it enumerates every returned field, explains the "since"/"now" envelope values, and defines truncation and retention behavior. An agent has everything needed to call it, interpret an empty result, and report back to the user.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema for "since" (must come from the server's "now", stay fixed while polling, never be bumped to the newest received_at, covers 24h when omitted) and for "from" (the FAXBEEP-EXAMPLE sentinel that overrides "since", and the note that masked result values must not be reused). The truncation hint about "limit" also tells the agent when to narrow.

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?

Opens with a specific verb and resource ("List the test faxes that Faxbeep received and published, newest first") and adds a scope that separates it from a per-user lookup: the list is public and contains everyone's tests. It references get_test_numbers as the source of a "now" value but never contrasts itself with get_test_fax, so sibling differentiation is only partial.

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

Usage Guidelines5/5

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

Explicit about when to call (polling for an incoming test), how to poll (wait ~30s, stop after ~10min), how to set and hold "since", and what to do with results (show view_url, show thumbnail_url in image-capable chats). It also pre-empts common misuse (don't use your own clock, don't advance since to the newest received_at) and names the FAXBEEP-EXAMPLE path for a sample answer.

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. 3 tool updates
    • First observedget_test_fax
    • First observedget_test_numbers
    • First observedlist_test_faxes

Publisher details

Operator
Ediblesites Ltd
Operator website
https://faxbeep.com
Vendor relationship
First-party
Trust center
Not available
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Send, receive, and verify faxes from AI assistants and agents via the Model Context Protocol.
    122 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to prepare, preview, quote, and send approved faxes, track delivery and evidence, read inbound faxes, extract data, and request human approvals through a fax API.
    15
    1,110 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to send free and paid faxes to US and Canada numbers, check fax status, and purchase prepaid credits, all without leaving the chat.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to send real faxes through the FaxDrop API. Provides safeguards including rate limiting, dry-run mode, and audit logging for secure fax operations.
    3
    255 npm
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.