Koskamo

Faxette MCP

An MCP server that enables AI assistants to send faxes to supported countries including the EU, UK, and US. It automates finding fax numbers, uploading documents, and generating payment links for per-fax billing without requiring a subscription.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Faxette MCP logo, by FaxetteVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Faxette
MCP endpoint (Streamable HTTP)
https://mcp.eu.faxette.com/mcp
Vendor documentation

What you can do with it

  • Send a referral letter to a doctor's office via fax
  • Find and verify official fax numbers for recipients
  • Upload documents and generate a secure payment link
  • Download delivery reports for sent faxes

Source and maintenance

Vendor evidenceRegistry 0.5.0
Maintenance checked

Protocol and capabilities

Server
faxette-eu 0.5.0
MCP protocol
2025-06-18
Tools
15 advertised
Resources
1 advertised
Resource templates
0 advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

This connector sends faxes to the EU, the UK, Switzerland, Norway, Iceland, Liechtenstein, Monaco, Montenegro, Ukraine, the Isle of Man, the US and Canada. For Mexico, Puerto Rico and Costa Rica, the person connects https://mcp.faxette.com/mcp instead. The person pays on Faxette's status page, or, when signed in, from their credit with send_fax once they agree to the price. Never ask for card details. Sending a fax doesn't need a Faxette account. Signing in keeps the person's faxes in their account, where get_account, get_faxes and get_fax read them. 1. Use lookup_fax_number to search Faxette's checked catalog. Show the number, official source and verification date, and have the person confirm the destination. If there is no match, find the number on the office's own website, never a search snippet or an unverified directory. Never guess. 2. Ask the person for the email address where Faxette sends the receipt and updates. Never guess it. 3. If you can read the files, upload each with create_document, in the order they should be faxed. If you can't, call create_fax without document_ids and tell the person to add their files on the status page. 4. Give the person the status_url. They check the fax number, documents and price there, and pay to send it. If they're signed in and their credit covers the fax's credit_price, you can offer to send it from their credit with send_fax instead, once they agree to that price. Never say a fax is sent or paid until get_fax_status or get_fax says so. 5. Check the status only when the person asks, or at most once a minute while it's sending. 6. If a form needs a handwritten signature, tell the person to print, sign and scan it before uploading. 7. Don't repeat the contents of medical or legal documents in the chat beyond what's needed. 8. Show the exact prepared PDF in the review interface or private review_url before asking for sending approval. An amount alone is not approval for changed documents. For a credit send, use the current credit_quote and obtain fresh approval after quote_changed. Keep payment on Faxette's browser page when using the embedded interface. 9. Use get_capabilities to check supported countries, languages, formats and pricing rules. Pass an explicit language only when the person chooses it. Use resend_fax for an eligible failed fax after confirming the destination; never create a replacement fax just to retry. Use get_fax_report for delivery records.

Tools

15 advertised

open_fax_review — Review the exact fax document
Advertised by the server during the last successful anonymous check.

Open the private upload and PDF review interface for an account fax before approving payment. Requires sign-in. The browser review link works when the client cannot show MCP Apps.

open_fax_review input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  }
}
open_fax_review annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fax_review — Refresh the private fax review
Advertised by the server during the last successful anonymous check.
Advertised read-only
get_fax_review input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "review_token"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "review_token": {
      "type": "string",
      "minLength": 1
    }
  }
}
get_fax_review annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
prepare_fax_upload — Prepare a private file upload
Advertised by the server during the last successful anonymous check.
prepare_fax_upload input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "review_token",
    "filename",
    "byte_size",
    "checksum",
    "content_type"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "checksum": {
      "type": "string",
      "minLength": 1
    },
    "filename": {
      "type": "string",
      "minLength": 1
    },
    "byte_size": {
      "type": "integer",
      "maximum": 9007199254740991,
      "exclusiveMinimum": 0
    },
    "content_type": {
      "type": "string",
      "minLength": 1
    },
    "review_token": {
      "type": "string",
      "minLength": 1
    }
  }
}
prepare_fax_upload annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
update_fax_review — Replace the fax files
Advertised by the server during the last successful anonymous check.
Advertised destructive
update_fax_review input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "review_token",
    "document_ids"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "document_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "minItems": 1
    },
    "review_token": {
      "type": "string",
      "minLength": 1
    }
  }
}
update_fax_review annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
get_capabilities — Check fax formats, destinations and pricing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this before preparing a fax to check this region's supported countries, languages, file limits and current retail and credit pricing rules. Prices are before tax; the exact total is confirmed after document processing and at checkout. It changes nothing.

get_capabilities input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_capabilities output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region",
    "connector_url",
    "countries",
    "languages",
    "formats",
    "limits",
    "pricing",
    "tax"
  ],
  "properties": {
    "tax": {
      "type": "object",
      "required": [
        "included",
        "applies",
        "finalized_at"
      ],
      "properties": {
        "applies": {
          "type": "boolean"
        },
        "included": {
          "type": "boolean"
        },
        "finalized_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "limits": {
      "type": "object",
      "required": [
        "documents",
        "bytes_per_document",
        "pages",
        "cover_page"
      ],
      "properties": {
        "pages": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "documents": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "cover_page": {
          "type": "object",
          "required": [
            "sender",
            "recipient",
            "subject",
            "message"
          ],
          "properties": {
            "sender": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "message": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "subject": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "recipient": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        "text_characters": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "bytes_per_document": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        }
      },
      "additionalProperties": false
    },
    "region": {
      "enum": [
        "us",
        "eu"
      ],
      "type": "string"
    },
    "formats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pricing": {
      "type": "object",
      "required": [
        "currency",
        "zones"
      ],
      "properties": {
        "zones": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "object",
            "required": [
              "countries",
              "retail",
              "credits"
            ],
            "properties": {
              "retail": {
                "type": "object",
                "required": [
                  "base_cents",
                  "included_pages",
                  "overage_cents_per_page"
                ],
                "properties": {
                  "base_cents": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  },
                  "included_pages": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  },
                  "overage_cents_per_page": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "credits": {
                "type": "object",
                "required": [
                  "base_cents",
                  "included_pages",
                  "overage_cents_per_page"
                ],
                "properties": {
                  "base_cents": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  },
                  "included_pages": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  },
                  "overage_cents_per_page": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "countries": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          }
        },
        "currency": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "text_formats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "connector_url": {
      "type": "string",
      "format": "uri"
    }
  },
  "additionalProperties": false
}
get_capabilities annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
lookup_fax_number — Find a checked fax number
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search Faxette's catalog by agency, form number or purpose. Returns only numbers supported by this connector, with the official source and verification date. An empty result means we have no current match, not that the office has no fax number. Show the source and have the person confirm the right office before creating a fax. It changes nothing.

lookup_fax_number input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 100,
      "minLength": 2
    }
  }
}
lookup_fax_number output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "destinations"
  ],
  "properties": {
    "destinations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "purpose",
          "signature",
          "numbers"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "numbers": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "fax_number",
                "label",
                "regions",
                "source_url",
                "verified_at"
              ],
              "properties": {
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "regions": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "fax_number": {
                  "type": "string"
                },
                "source_url": {
                  "type": "string",
                  "format": "uri"
                },
                "verified_at": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                }
              },
              "additionalProperties": false
            }
          },
          "purpose": {
            "type": [
              "string",
              "null"
            ]
          },
          "signature": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
lookup_fax_number annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fax_report — Get a delivery report
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the person asks for a delivery report or the transmitted document. Returns the destination, page count, delivery result, timestamps and attempts. A report URL is available after delivery, failure or cancellation. Document links are only returned for the signed-in owner of an account fax while its files are retained. Report and document links expire after five minutes. A delivered fax does not establish that the recipient read it. It changes nothing.

get_fax_report input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "An account fax ID; requires sign-in. Pass this or status_url, not both."
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The original status link, including its token for a guest fax."
    }
  }
}
get_fax_report output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "status",
    "fax_number",
    "page_count",
    "created_at",
    "delivered_at",
    "failed_at",
    "canceled_at",
    "document_sha256",
    "report_available",
    "document_available",
    "report_url",
    "document_url",
    "attempts"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "draft",
        "processing_documents",
        "documents_ready",
        "awaiting_payment",
        "scheduled",
        "sending",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "attempts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "number",
          "fax_number",
          "status",
          "pages_sent",
          "started_at",
          "updated_at",
          "failure_reason"
        ],
        "properties": {
          "number": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "status": {
            "type": "string"
          },
          "fax_number": {
            "type": "string"
          },
          "pages_sent": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "failure_reason": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "failed_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "fax_number": {
      "type": "string"
    },
    "page_count": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "report_url": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ]
    },
    "canceled_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ]
    },
    "delivered_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ]
    },
    "document_url": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ]
    },
    "document_sha256": {
      "type": [
        "string",
        "null"
      ]
    },
    "report_available": {
      "type": "boolean"
    },
    "document_available": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
get_fax_report annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
resend_fax — Resend an eligible failed fax
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this only after the person asks to resend a failed fax and confirms its destination, including any corrected number. Check get_fax or get_fax_status first. Reuses the existing fax, payment hold and resend rules; it does not create a new paid fax. Faxette refuses expired resend windows and exhausted retries. If a call is interrupted, check the existing fax before calling again.

resend_fax input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "An account fax ID; requires sign-in. Pass this or status_url, not both."
    },
    "fax_number": {
      "type": "string",
      "description": "A corrected number explicitly confirmed by the person. Omit to use the existing destination."
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The original fax status link, including its token for a guest fax."
    }
  }
}
resend_fax output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "status",
    "fax_number",
    "page_count",
    "price",
    "payment",
    "checkout_available",
    "attempt",
    "max_attempts",
    "next_attempt_at",
    "resend_by",
    "document_errors",
    "failure_reason",
    "status_url"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The fax's id. Pass it to get_fax when the person is signed in."
    },
    "price": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "amount_cents",
            "currency"
          ],
          "properties": {
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Before tax. Null until the pages are counted."
    },
    "status": {
      "enum": [
        "draft",
        "processing_documents",
        "documents_ready",
        "awaiting_payment",
        "scheduled",
        "sending",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string",
      "description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
    },
    "attempt": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "The current attempt to dial the fax number."
    },
    "payment": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "status",
            "method",
            "tax_cents",
            "amount_cents",
            "currency"
          ],
          "properties": {
            "method": {
              "enum": [
                "card",
                "credit"
              ],
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "tax_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
    },
    "language": {
      "type": [
        "string",
        "null"
      ]
    },
    "resend_by": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
    },
    "fax_number": {
      "type": "string"
    },
    "page_count": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "Null until the pages are counted."
    },
    "review_url": {
      "type": "string",
      "format": "uri",
      "description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying."
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The page where the person checks the fax and pays. Give it to them."
    },
    "max_attempts": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "checkout_quote": {
      "type": [
        "string",
        "null"
      ]
    },
    "failure_reason": {
      "anyOf": [
        {
          "enum": [
            "temporary",
            "wrong_number",
            "our_side"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
    },
    "document_errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "reason",
          "position",
          "message"
        ],
        "properties": {
          "reason": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
    },
    "next_attempt_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "When the next attempt dials, if the line was busy or didn't answer."
    },
    "checkout_available": {
      "type": "boolean",
      "description": "True when the person can pay on the status page."
    }
  },
  "additionalProperties": false
}
resend_fax annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
create_document — Upload a file
Advertised by the server during the last successful anonymous check.

Use this to add a file the person gave you to a fax: a PDF, or a photo saved as JPG, PNG, WEBP or HEIC, up to 20 MB. Call it once per file, before create_fax, in the order the files should be faxed. It returns document_id, upload_url and upload_headers: PUT the file's exact bytes to upload_url with those headers within 5 minutes, then pass document_id to create_fax within an hour. Nothing is faxed or charged. If you can't read the file's bytes, don't use this: call create_fax without document_ids, and the person adds the file on the status page.

create_document input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "fax_number",
    "filename",
    "byte_size",
    "checksum",
    "content_type"
  ],
  "properties": {
    "checksum": {
      "type": "string",
      "minLength": 1,
      "description": "The file's MD5 digest, base64-encoded, as printed by: openssl md5 -binary <file> | base64"
    },
    "filename": {
      "type": "string",
      "minLength": 1,
      "description": "The file's name with its extension, like referral.pdf."
    },
    "byte_size": {
      "type": "integer",
      "maximum": 9007199254740991,
      "description": "The file's exact size in bytes.",
      "exclusiveMinimum": 0
    },
    "fax_number": {
      "type": "string",
      "description": "The fax number the file will be faxed to, in international format, like +31201234567. Numbers in the EU, the UK, Switzerland, Norway, Iceland, Liechtenstein, Monaco, Montenegro, Ukraine, the Isle of Man, the US and Canada only. Use the same number in create_fax."
    },
    "content_type": {
      "enum": [
        "application/pdf",
        "image/jpeg",
        "image/png",
        "image/webp",
        "image/heic",
        "image/heif"
      ],
      "type": "string",
      "description": "The file's media type. It must match the file's contents."
    }
  }
}
create_document output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "document_id",
    "upload_url",
    "upload_headers"
  ],
  "properties": {
    "upload_url": {
      "type": "string",
      "format": "uri",
      "description": "PUT the file's exact bytes here within 5 minutes."
    },
    "document_id": {
      "type": "string",
      "description": "Pass this to create_fax in document_ids."
    },
    "upload_headers": {
      "type": "object",
      "description": "Send these headers, unchanged, with the PUT.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
create_document annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
create_fax — Start a fax
Advertised by the server during the last successful anonymous check.

Use this once the person has confirmed the fax number, and given you their email if they aren't signed in. It creates the fax and returns status_url, the page where the person checks the fax number, documents and price, and pays to send it. Nothing is sent or charged until they pay there. Pass the document_ids from create_document. Without them, the fax waits on the status page for the person to add their files. Choose a private random idempotency_key for each intentional new fax. Reuse the exact same key and request after a timeout or request_in_progress; never change the key just to retry. The key is retained for 24 hours. To check a fax, use get_fax_status or get_fax.

create_fax input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "idempotency_key",
    "fax_number"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "The person's email address, where Faxette sends the receipt and updates. Ask the person for it. Leave it out when they're signed in: their account's email is used."
    },
    "content": {
      "type": "object",
      "required": [
        "text",
        "format"
      ],
      "properties": {
        "text": {
          "type": "string",
          "maxLength": 50000,
          "minLength": 1
        },
        "format": {
          "enum": [
            "text",
            "markdown"
          ],
          "type": "string"
        }
      },
      "description": "Text approved by the person, rendered as a PDF before the uploaded documents. Markdown supports headings, lists, tables and links as printed text. Images, raw HTML and remote assets are refused. Always show the generated proof before sending."
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "description": "The language the person chooses for the fax page, checkout and emails. Check get_capabilities for this region. Omit to use the account preference or regional default."
    },
    "cover_page": {
      "type": "object",
      "properties": {
        "sender": {
          "type": "string",
          "maxLength": 120
        },
        "message": {
          "type": "string",
          "maxLength": 2000
        },
        "subject": {
          "type": "string",
          "maxLength": 200
        },
        "recipient": {
          "type": "string",
          "maxLength": 120
        }
      },
      "description": "An optional cover page. Confirm its wording with the person first. It counts toward the total pages; omit if not requested."
    },
    "fax_number": {
      "type": "string",
      "description": "The fax number the fax goes to, in international format, like +31201234567. Numbers in the EU, the UK, Switzerland, Norway, Iceland, Liechtenstein, Monaco, Montenegro, Ukraine, the Isle of Man, the US and Canada only."
    },
    "document_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "The document_id of each file from create_document, in the order they're faxed. Up to 10. Leave it out to let the person add files on the status page."
    },
    "idempotency_key": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.-]{32,128}$",
      "description": "A private random UUID for this intentional new fax. Keep it unchanged for retries of the same request within 24 hours."
    }
  }
}
create_fax output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "status",
    "fax_number",
    "page_count",
    "price",
    "payment",
    "checkout_available",
    "attempt",
    "max_attempts",
    "next_attempt_at",
    "resend_by",
    "document_errors",
    "failure_reason",
    "status_url"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The fax's id. Pass it to get_fax when the person is signed in."
    },
    "price": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "amount_cents",
            "currency"
          ],
          "properties": {
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Before tax. Null until the pages are counted."
    },
    "status": {
      "enum": [
        "draft",
        "processing_documents",
        "documents_ready",
        "awaiting_payment",
        "scheduled",
        "sending",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string",
      "description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
    },
    "attempt": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "The current attempt to dial the fax number."
    },
    "payment": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "status",
            "method",
            "tax_cents",
            "amount_cents",
            "currency"
          ],
          "properties": {
            "method": {
              "enum": [
                "card",
                "credit"
              ],
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "tax_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
    },
    "language": {
      "type": [
        "string",
        "null"
      ]
    },
    "resend_by": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
    },
    "fax_number": {
      "type": "string"
    },
    "page_count": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "Null until the pages are counted."
    },
    "review_url": {
      "type": "string",
      "format": "uri",
      "description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying."
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The page where the person checks the fax and pays. Give it to them."
    },
    "max_attempts": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "checkout_quote": {
      "type": [
        "string",
        "null"
      ]
    },
    "failure_reason": {
      "anyOf": [
        {
          "enum": [
            "temporary",
            "wrong_number",
            "our_side"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
    },
    "document_errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "reason",
          "position",
          "message"
        ],
        "properties": {
          "reason": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
    },
    "next_attempt_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "When the next attempt dials, if the line was busy or didn't answer."
    },
    "checkout_available": {
      "type": "boolean",
      "description": "True when the person can pay on the status page."
    }
  },
  "additionalProperties": false
}
create_fax annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_fax_status — Check a fax
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the person asks how their fax is doing, or to see whether it's ready to pay. It reads the fax from its status_url and returns its status, page count, price, payment and attempts. checkout_available is true once the person can pay on the status page. It changes nothing. While a fax is sending, call it at most once a minute.

get_fax_status input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "status_url"
  ],
  "properties": {
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The status_url create_fax returned, like https://eu.faxette.com/f/abc123?token=xyz."
    }
  }
}
get_fax_status output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "status",
    "fax_number",
    "page_count",
    "price",
    "payment",
    "checkout_available",
    "attempt",
    "max_attempts",
    "next_attempt_at",
    "resend_by",
    "document_errors",
    "failure_reason",
    "status_url"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The fax's id. Pass it to get_fax when the person is signed in."
    },
    "price": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "amount_cents",
            "currency"
          ],
          "properties": {
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Before tax. Null until the pages are counted."
    },
    "status": {
      "enum": [
        "draft",
        "processing_documents",
        "documents_ready",
        "awaiting_payment",
        "scheduled",
        "sending",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string",
      "description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
    },
    "attempt": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "The current attempt to dial the fax number."
    },
    "payment": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "status",
            "method",
            "tax_cents",
            "amount_cents",
            "currency"
          ],
          "properties": {
            "method": {
              "enum": [
                "card",
                "credit"
              ],
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "tax_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
    },
    "language": {
      "type": [
        "string",
        "null"
      ]
    },
    "resend_by": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
    },
    "fax_number": {
      "type": "string"
    },
    "page_count": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "Null until the pages are counted."
    },
    "review_url": {
      "type": "string",
      "format": "uri",
      "description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying."
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The page where the person checks the fax and pays. Give it to them."
    },
    "max_attempts": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "checkout_quote": {
      "type": [
        "string",
        "null"
      ]
    },
    "failure_reason": {
      "anyOf": [
        {
          "enum": [
            "temporary",
            "wrong_number",
            "our_side"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
    },
    "document_errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "reason",
          "position",
          "message"
        ],
        "properties": {
          "reason": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
    },
    "next_attempt_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "When the next attempt dials, if the line was busy or didn't answer."
    },
    "checkout_available": {
      "type": "boolean",
      "description": "True when the person can pay on the status page."
    }
  },
  "additionalProperties": false
}
get_fax_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_account — See who is signed in
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this to see which Faxette account the person signed in with: their name, email, credit, and whether it's the US or EU copy. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in. It changes nothing.

get_account input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_account output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "name",
    "email",
    "region",
    "credit"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": [
        "string",
        "null"
      ]
    },
    "email": {
      "type": "string",
      "description": "Where Faxette sends receipts and updates for faxes started while signed in."
    },
    "credit": {
      "type": "object",
      "required": [
        "amount_cents",
        "currency"
      ],
      "properties": {
        "currency": {
          "type": "string",
          "description": "usd or eur."
        },
        "amount_cents": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        }
      },
      "description": "The account's credit, which send_fax spends.",
      "additionalProperties": false
    },
    "region": {
      "enum": [
        "us",
        "eu"
      ],
      "type": "string",
      "description": "Which copy of Faxette the account is on."
    }
  },
  "additionalProperties": false
}
get_account annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_faxes — List faxes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the person asks about faxes they've sent from their Faxette account, like what they sent last week or which faxes failed. Returns 25 at a time, newest first. Pass next_page back as page for the next 25. Filter with status, for example ["failed"] or ["delivered"]. Use get_fax for one fax's details. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in. It changes nothing.

get_faxes input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "page": {
      "type": "string",
      "description": "The next_page from the previous call."
    },
    "status": {
      "type": "array",
      "items": {
        "enum": [
          "draft",
          "processing_documents",
          "documents_ready",
          "awaiting_payment",
          "scheduled",
          "sending",
          "delivered",
          "failed",
          "canceled"
        ],
        "type": "string"
      },
      "description": "Only faxes in these states."
    }
  }
}
get_faxes output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "faxes",
    "next_page"
  ],
  "properties": {
    "faxes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "status",
          "fax_number",
          "page_count",
          "created_at",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass it to get_fax for the details."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The fax's page, where the person checks it and pays. Give it to them."
          },
          "status": {
            "enum": [
              "draft",
              "processing_documents",
              "documents_ready",
              "awaiting_payment",
              "scheduled",
              "sending",
              "delivered",
              "failed",
              "canceled"
            ],
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "fax_number": {
            "type": "string"
          },
          "page_count": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "next_page": {
      "type": [
        "string",
        "null"
      ],
      "description": "Pass it as page for the next 25. Null on the last page."
    }
  },
  "additionalProperties": false
}
get_faxes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fax — Check a fax in the account
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this for one fax from the person's Faxette account: its status, price, payment, documents' file names and history. Pass the id from get_faxes or create_fax. While a fax is sending, call it at most once a minute. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in. It changes nothing.

get_fax input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "The fax's id, from get_faxes or create_fax."
    }
  }
}
get_fax output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "status",
    "fax_number",
    "page_count",
    "price",
    "payment",
    "checkout_available",
    "attempt",
    "max_attempts",
    "next_attempt_at",
    "resend_by",
    "document_errors",
    "failure_reason",
    "status_url",
    "created_at",
    "delivered_at",
    "failed_at",
    "documents",
    "credit_price",
    "status_message",
    "history"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The fax's id. Pass it to get_fax when the person is signed in."
    },
    "price": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "amount_cents",
            "currency"
          ],
          "properties": {
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Before tax. Null until the pages are counted."
    },
    "status": {
      "enum": [
        "draft",
        "processing_documents",
        "documents_ready",
        "awaiting_payment",
        "scheduled",
        "sending",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string",
      "description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
    },
    "attempt": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "The current attempt to dial the fax number."
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "at",
          "event"
        ],
        "properties": {
          "at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "event": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "description": "What has happened to the fax, oldest first."
    },
    "payment": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "status",
            "method",
            "tax_cents",
            "amount_cents",
            "currency"
          ],
          "properties": {
            "method": {
              "enum": [
                "card",
                "credit"
              ],
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "tax_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
    },
    "language": {
      "type": [
        "string",
        "null"
      ]
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The documents' file names, in the order they're faxed. Empty once deleted."
    },
    "failed_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ]
    },
    "resend_by": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "fax_number": {
      "type": "string"
    },
    "page_count": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "Null until the pages are counted."
    },
    "review_url": {
      "type": "string",
      "format": "uri",
      "description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying."
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The page where the person checks the fax and pays. Give it to them."
    },
    "credit_price": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "amount_cents",
            "currency"
          ],
          "properties": {
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "What send_fax takes from the credit for this fax. Null once it can no longer be paid for."
    },
    "credit_quote": {
      "type": [
        "string",
        "null"
      ]
    },
    "delivered_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ]
    },
    "max_attempts": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "checkout_quote": {
      "type": [
        "string",
        "null"
      ]
    },
    "failure_reason": {
      "anyOf": [
        {
          "enum": [
            "temporary",
            "wrong_number",
            "our_side"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
    },
    "status_message": {
      "type": "string",
      "description": "Where the fax is, in the words the fax page uses."
    },
    "document_errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "reason",
          "position",
          "message"
        ],
        "properties": {
          "reason": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
    },
    "next_attempt_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "When the next attempt dials, if the line was busy or didn't answer."
    },
    "checkout_available": {
      "type": "boolean",
      "description": "True when the person can pay on the status page."
    },
    "immediate_sending_consent_required": {
      "type": "boolean",
      "description": "When true, obtain agreement to immediate sending and acknowledgement that the withdrawal right ends on delivery before calling send_fax."
    }
  },
  "additionalProperties": false
}
get_fax annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
send_fax — Send a fax from credit
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this to send a fax from the person's Faxette credit. Only for a fax in their account that's ready to pay for: call get_fax first. Show the prepared PDF with open_fax_review or its review_url. Have the person confirm the destination, documents and credit_price, explain that it comes from their credit, and call this only once they clearly agree. If get_account shows their credit doesn't cover it, give them the status page instead, where they can pay for this fax by card. For the EU connector, also explain that sending starts immediately and the person's right to cancel ends once the fax is delivered. Obtain their explicit agreement before setting immediate_sending_consent to true. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in.

send_fax input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "quote",
    "id",
    "amount_cents"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "The fax's id, from create_fax, get_faxes or get_fax."
    },
    "quote": {
      "type": "string",
      "minLength": 1,
      "description": "The credit_quote returned by get_fax for the exact destination, PDF and price the person reviewed and approved. After quote_changed or quote_required, show the new proof and obtain fresh approval."
    },
    "amount_cents": {
      "type": "integer",
      "maximum": 9007199254740991,
      "description": "The credit_price amount_cents from get_fax that the person agreed to. If the fax's documents changed since, Faxette refuses with price_changed: call get_fax and confirm the new price.",
      "exclusiveMinimum": 0
    },
    "immediate_sending_consent": {
      "type": "boolean",
      "description": "Required as true for EU credit sends, only after the person explicitly agrees to immediate sending and acknowledges that their right to cancel ends on delivery. Never infer this from agreement to the price alone."
    }
  }
}
send_fax output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "status",
    "fax_number",
    "page_count",
    "price",
    "payment",
    "checkout_available",
    "attempt",
    "max_attempts",
    "next_attempt_at",
    "resend_by",
    "document_errors",
    "failure_reason",
    "status_url"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The fax's id. Pass it to get_fax when the person is signed in."
    },
    "price": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "amount_cents",
            "currency"
          ],
          "properties": {
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Before tax. Null until the pages are counted."
    },
    "status": {
      "enum": [
        "draft",
        "processing_documents",
        "documents_ready",
        "awaiting_payment",
        "scheduled",
        "sending",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string",
      "description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
    },
    "attempt": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "The current attempt to dial the fax number."
    },
    "payment": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "status",
            "method",
            "tax_cents",
            "amount_cents",
            "currency"
          ],
          "properties": {
            "method": {
              "enum": [
                "card",
                "credit"
              ],
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "currency": {
              "type": "string",
              "description": "usd or eur."
            },
            "tax_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "amount_cents": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
    },
    "language": {
      "type": [
        "string",
        "null"
      ]
    },
    "resend_by": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
    },
    "fax_number": {
      "type": "string"
    },
    "page_count": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "Null until the pages are counted."
    },
    "review_url": {
      "type": "string",
      "format": "uri",
      "description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying."
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "The page where the person checks the fax and pays. Give it to them."
    },
    "max_attempts": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "checkout_quote": {
      "type": [
        "string",
        "null"
      ]
    },
    "failure_reason": {
      "anyOf": [
        {
          "enum": [
            "temporary",
            "wrong_number",
            "our_side"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
    },
    "document_errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "reason",
          "position",
          "message"
        ],
        "properties": {
          "reason": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
    },
    "next_attempt_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        {
          "type": "null"
        }
      ],
      "description": "When the next attempt dials, if the line was busy or didn't answer."
    },
    "checkout_available": {
      "type": "boolean",
      "description": "True when the person can pay on the status page."
    }
  },
  "additionalProperties": false
}
send_fax annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}

Prompts

2 advertised

send_fax — Send a fax

Advertised by the server during the last successful anonymous check.

Fax a document with Faxette: find the official fax number, upload the files and get the link to check and pay.

recipient
Who the fax goes to, like my doctor's office or the IRS.
check_fax — Check a fax

Advertised by the server during the last successful anonymous check.

See how a Faxette fax is doing from its status page link.

status_url
The fax's status page link. (required)

Resources

1 advertised

ui://faxette/review.html

Advertised by the server during the last successful anonymous check.

ui://faxette/review.html URI
ui://faxette/review.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1673 ms
95th percentile latency
1673 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1673 ms · metadata changed · 15 tool(s), 1 resource(s), 0 resource template(s), 2 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http faxette-mcp https://mcp.eu.faxette.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add faxette-mcp --url https://mcp.eu.faxette.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable faxette-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "faxette-mcp": {
      "url": "https://mcp.eu.faxette.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "faxette-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.eu.faxette.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start faxette-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "faxette-mcp": {
      "type": "http",
      "url": "https://mcp.eu.faxette.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http faxette-mcp https://mcp.eu.faxette.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "faxette-mcp": {
      "url": "https://mcp.eu.faxette.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "faxette-mcp": {
      "serverUrl": "https://mcp.eu.faxette.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Faxette MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Faxette MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing