Skip to main content
Glama

Send a fax

send_fax
Destructive

Sends the person’s XipFax draft to an office, by its office_id from find_fax_number, or to a fax number in the United States, its territories or Canada. Give document_ids, as finish_fax_file gave them, in the order you added them. It goes at once only where the person has a plan and chose Send straight away for you, when they connected you or since. Otherwise nothing is sent: the answer is a link where they look the fax over, send it and pay where they have no plan, so give them the link and never say it went. A draft with no pages, or with other pages than those you name or in another order, also answers a link, where they add or check them.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "send_fax"
  }
}

Input Schema

NameRequiredDescriptionDefault
office_idNoThe office, as find_fax_number gives it.
fax_numberNoA fax number, with or without its +1: +1 202 555 0143.
document_idsNoThe draft’s documents, as finish_fax_file gave them, in the order you added them.

Output Schema

NameRequiredDescriptionDefault
faxYesThe fax as XipFax’s log reads it, sent or waiting for the person; null where nothing could be sent as it stands.
urlYesWhere the person goes, unless the fax is sent: give them this link.
resultYessent: the fax is on its way, paid as paid_by says. waiting: nothing is sent: the person looks the fax over at url and sends it there, paying there where they have no plan. add_pages: the draft has no pages: the person adds them at url. look_over: the draft holds other pages than document_ids names, or the same in another order: the person checks it at url.
paid_byYesHow a fax sent is paid: plan, its pages counted on the person’s plan. Null where nothing is sent. An open set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / fax / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "A fax of the person’s XipFax log.",
      -    "properties": {
      -      "cover_confidential": {
      -        "description": "Whether its cover page was marked Confidential; false for a fax received.",
      -        "type": "boolean"
      -      },
      -      "direction": {
      -        "description": "`sent` for a fax the person sent, `received` for one sent to their XipFax number.",
      -        "enum": [
      -          "sent",
      -          "received"
      -        ],
      -        "type": "string"
      -      },
      -      "failure": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "no_answer",
      -              "busy",
      -              "call_dropped",
      -              "declined",
      -              "not_a_fax_number",
      -              "ours"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Why its last try failed: `no_answer`, `busy`, `call_dropped`, `declined`, `not_a_fax_number`, or `ours` for a failure on XipFax’s side. Null where none failed. An open set."
      -      },
      -      "finished_at": {
      -        "description": "When it was delivered or failed for good; null until then.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "from_number": {
      -        "description": "For a fax sent, the number it went from: the person’s own XipFax number where they have a plan, otherwise XipFax’s; null while the fax waits for them. For a fax received, the caller’s number, null where the caller’s line gave none.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "id": {
      -        "description": "The fax.",
      -        "type": "string"
      -      },
      -      "office_id": {
      -        "description": "The office it went to, by its id on XipFax’s list, as find_fax_number gives it; null for a number typed, and for a fax received.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "pages": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Its pages, the cover page among them."
      -      },
      -      "price": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "description": "An amount of money.",
      -            "properties": {
      -              "amount_minor": {
      -                "description": "In the currency’s smallest unit: cents.",
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "currency": {
      -                "description": "Its ISO 4217 code: `USD`.",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "amount_minor",
      -              "currency"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What it costs: what its payment holds while it sends, and what was taken once it was delivered. Null for a fax sent on the plan, for one that failed, which costs nothing, and for a fax received."
      -      },
      -      "retry_at": {
      -        "description": "When it is tried again, while a failed try waits for the next; null otherwise.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "sender_name": {
      -        "description": "For a fax the person sent, the sender’s name its header line gave.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "sent_at": {
      -        "description": "When the person sent it; for a fax received, when it came.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "description": "Where it stands: `draft` for the person’s draft, read by its id until it is sent; `sending` until it is delivered or fails for good, then `delivered` or `failed`; `received` for a fax sent to their XipFax number. An open set: read what you know.",
      -        "enum": [
      -          "draft",
      -          "sending",
      -          "delivered",
      -          "failed",
      -          "received"
      -        ],
      -        "type": "string"
      -      },
      -      "step": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "queued",
      -              "preparing",
      -              "sending"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Where a fax being sent has got to: `queued`, `preparing` its pages, then `sending`; null for a draft, once it has ended, and for a fax received. An open set."
      -      },
      -      "time_zone": {
      -        "description": "The time zone its confirmation tells its times in, as the IANA database names it; null for a fax received.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "to_number": {
      -        "description": "The number it went to, `+1` and ten digits; for a fax received, the person’s own XipFax number it came to.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "direction",
      -      "status",
      -      "step",
      -      "office_id",
      -      "to_number",
      -      "from_number",
      -      "pages",
      -      "price",
      -      "sent_at",
      -      "finished_at",
      -      "retry_at",
      -      "failure",
      -      "time_zone",
      -      "sender_name",
      -      "cover_confidential"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "A fax of the person’s XipFax log.",
      +    "properties": {
      +      "cover_confidential": {
      +        "description": "Whether its cover page was marked Confidential; false for a fax received.",
      +        "type": "boolean"
      +      },
      +      "direction": {
      +        "description": "`sent` for a fax the person sent, `received` for one sent to their XipFax number.",
      +        "enum": [
      +          "sent",
      +          "received"
      +        ],
      +        "type": "string"
      +      },
      +      "failure": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "no_answer",
      +              "busy",
      +              "call_dropped",
      +              "declined",
      +              "not_a_fax_number",
      +              "ours"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Why its last try failed: `no_answer`, `busy`, `call_dropped`, `declined`, `not_a_fax_number`, or `ours` for a failure on XipFax’s side. Null where none failed. An open set."
      +      },
      +      "finished_at": {
      +        "description": "When it was delivered or failed for good; null until then.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "from_number": {
      +        "description": "For a fax sent, the number it went from: the person’s own XipFax number where they have a plan, otherwise XipFax’s; null while the fax waits for them. For a fax received, the caller’s number, null where the caller’s line gave none.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "description": "The fax.",
      +        "type": "string"
      +      },
      +      "office_id": {
      +        "description": "The office it went to, by its id on XipFax’s list, as find_fax_number gives it; null for a number typed, and for a fax received.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "pages": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Its pages, the cover page among them."
      +      },
      +      "price": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "description": "An amount of money.",
      +            "properties": {
      +              "amount_minor": {
      +                "description": "In the currency’s smallest unit: cents.",
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "currency": {
      +                "description": "Its ISO 4217 code: `USD`.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "amount_minor",
      +              "currency"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What it costs: what its payment holds while it sends, and what was taken once it was delivered. Null for a fax sent on the plan or with a promo code, for one that failed, which costs nothing, and for a fax received."
      +      },
      +      "retry_at": {
      +        "description": "When it is tried again, while a failed try waits for the next; null otherwise.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sender_name": {
      +        "description": "For a fax the person sent, the sender’s name its header line gave.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sent_at": {
      +        "description": "When the person sent it; for a fax received, when it came.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "description": "Where it stands: `draft` for the person’s draft, read by its id until it is sent; `sending` until it is delivered or fails for good, then `delivered` or `failed`; `received` for a fax sent to their XipFax number. An open set: read what you know.",
      +        "enum": [
      +          "draft",
      +          "sending",
      +          "delivered",
      +          "failed",
      +          "received"
      +        ],
      +        "type": "string"
      +      },
      +      "step": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "queued",
      +              "preparing",
      +              "sending"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Where a fax being sent has got to: `queued`, `preparing` its pages, then `sending`; null for a draft, once it has ended, and for a fax received. An open set."
      +      },
      +      "time_zone": {
      +        "description": "The time zone its confirmation tells its times in, as the IANA database names it; null for a fax received.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "to_number": {
      +        "description": "The number it went to, `+1` and ten digits; for a fax received, the person’s own XipFax number it came to.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "direction",
      +      "status",
      +      "step",
      +      "office_id",
      +      "to_number",
      +      "from_number",
      +      "pages",
      +      "price",
      +      "sent_at",
      +      "finished_at",
      +      "retry_at",
      +      "failure",
      +      "time_zone",
      +      "sender_name",
      +      "cover_confidential"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / fax / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "A fax of the person’s XipFax log.",
      -    "properties": {
      -      "cover_confidential": {
      -        "description": "Whether its cover page was marked Confidential; false for a fax received.",
      -        "type": "boolean"
      -      },
      -      "direction": {
      -        "description": "`sent` for a fax you sent, `received` for one sent to your number.",
      -        "enum": [
      -          "sent",
      -          "received"
      -        ],
      -        "type": "string"
      -      },
      -      "failure": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "no_answer",
      -              "busy",
      -              "call_dropped",
      -              "declined",
      -              "not_a_fax_number",
      -              "ours"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Why its last try failed: `no_answer`, `busy`, `call_dropped`, `declined`, `not_a_fax_number`, or `ours` for a failure on XipFax’s side. Null where none failed. An open set."
      -      },
      -      "finished_at": {
      -        "description": "When it was delivered or failed for good; null until then.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "from_number": {
      -        "description": "The number it went from: the person’s own XipFax number where they have a plan, otherwise XipFax’s; null while the fax waits for them.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "id": {
      -        "description": "The fax.",
      -        "type": "string"
      -      },
      -      "office_id": {
      -        "description": "The office it went to, by its id on XipFax’s list, as find_fax_number gives it; null for a number typed.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "pages": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Its pages, the cover page among them."
      -      },
      -      "price": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "description": "An amount of money.",
      -            "properties": {
      -              "amount_minor": {
      -                "description": "In the currency’s smallest unit: cents.",
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "currency": {
      -                "description": "Its ISO 4217 code: `USD`.",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "amount_minor",
      -              "currency"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What it costs: what its payment holds while it sends, and what was taken once it was delivered. Null for a fax sent on the plan, for one that failed, which costs nothing, and for a fax received."
      -      },
      -      "retry_at": {
      -        "description": "When it is tried again, while a failed try waits for the next; null otherwise.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "sender_name": {
      -        "description": "For a fax you sent, the sender’s name its header line gave.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "sent_at": {
      -        "description": "When you sent it; for a fax received, when it came.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "description": "Where it stands: `draft` for your draft, read by its id until it is sent; `sending` until it is delivered or fails for good, then `delivered` or `failed`; `received` for a fax sent to your number. An open set: read what you know.",
      -        "enum": [
      -          "draft",
      -          "sending",
      -          "delivered",
      -          "failed",
      -          "received"
      -        ],
      -        "type": "string"
      -      },
      -      "step": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "queued",
      -              "preparing",
      -              "sending"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Where a fax being sent has got to: `queued`, `preparing` its pages, then `sending`; null for a draft, once it has ended, and for a fax received. An open set."
      -      },
      -      "time_zone": {
      -        "description": "The time zone its confirmation tells its times in, as the IANA database names it; null for a fax received.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "to_number": {
      -        "description": "The number it went to, `+1` and ten digits; for a fax received, your number it came to.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "direction",
      -      "status",
      -      "step",
      -      "office_id",
      -      "to_number",
      -      "from_number",
      -      "pages",
      -      "price",
      -      "sent_at",
      -      "finished_at",
      -      "retry_at",
      -      "failure",
      -      "time_zone",
      -      "sender_name",
      -      "cover_confidential"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "A fax of the person’s XipFax log.",
      +    "properties": {
      +      "cover_confidential": {
      +        "description": "Whether its cover page was marked Confidential; false for a fax received.",
      +        "type": "boolean"
      +      },
      +      "direction": {
      +        "description": "`sent` for a fax the person sent, `received` for one sent to their XipFax number.",
      +        "enum": [
      +          "sent",
      +          "received"
      +        ],
      +        "type": "string"
      +      },
      +      "failure": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "no_answer",
      +              "busy",
      +              "call_dropped",
      +              "declined",
      +              "not_a_fax_number",
      +              "ours"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Why its last try failed: `no_answer`, `busy`, `call_dropped`, `declined`, `not_a_fax_number`, or `ours` for a failure on XipFax’s side. Null where none failed. An open set."
      +      },
      +      "finished_at": {
      +        "description": "When it was delivered or failed for good; null until then.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "from_number": {
      +        "description": "For a fax sent, the number it went from: the person’s own XipFax number where they have a plan, otherwise XipFax’s; null while the fax waits for them. For a fax received, the caller’s number, null where the caller’s line gave none.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "description": "The fax.",
      +        "type": "string"
      +      },
      +      "office_id": {
      +        "description": "The office it went to, by its id on XipFax’s list, as find_fax_number gives it; null for a number typed, and for a fax received.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "pages": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Its pages, the cover page among them."
      +      },
      +      "price": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "description": "An amount of money.",
      +            "properties": {
      +              "amount_minor": {
      +                "description": "In the currency’s smallest unit: cents.",
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "currency": {
      +                "description": "Its ISO 4217 code: `USD`.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "amount_minor",
      +              "currency"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What it costs: what its payment holds while it sends, and what was taken once it was delivered. Null for a fax sent on the plan, for one that failed, which costs nothing, and for a fax received."
      +      },
      +      "retry_at": {
      +        "description": "When it is tried again, while a failed try waits for the next; null otherwise.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sender_name": {
      +        "description": "For a fax the person sent, the sender’s name its header line gave.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sent_at": {
      +        "description": "When the person sent it; for a fax received, when it came.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "description": "Where it stands: `draft` for the person’s draft, read by its id until it is sent; `sending` until it is delivered or fails for good, then `delivered` or `failed`; `received` for a fax sent to their XipFax number. An open set: read what you know.",
      +        "enum": [
      +          "draft",
      +          "sending",
      +          "delivered",
      +          "failed",
      +          "received"
      +        ],
      +        "type": "string"
      +      },
      +      "step": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "queued",
      +              "preparing",
      +              "sending"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Where a fax being sent has got to: `queued`, `preparing` its pages, then `sending`; null for a draft, once it has ended, and for a fax received. An open set."
      +      },
      +      "time_zone": {
      +        "description": "The time zone its confirmation tells its times in, as the IANA database names it; null for a fax received.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "to_number": {
      +        "description": "The number it went to, `+1` and ten digits; for a fax received, the person’s own XipFax number it came to.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "direction",
      +      "status",
      +      "step",
      +      "office_id",
      +      "to_number",
      +      "from_number",
      +      "pages",
      +      "price",
      +      "sent_at",
      +      "finished_at",
      +      "retry_at",
      +      "failure",
      +      "time_zone",
      +      "sender_name",
      +      "cover_confidential"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Added

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already flag destructiveHint/openWorldHint/non-idempotent, and the description goes well beyond them by disclosing the bifurcated outcome (sent vs. review link), the fallback when the draft has no pages or mismatched/ordered pages, and the explicit anti-hallucination rule 'never say it went.' That is exactly the side-effect and failure-mode context an agent needs before invoking a send.

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 primary outcome (immediate send vs. link) is front-loaded and every clause carries information about preconditions or fallbacks. The multi-clause sentences are dense and slightly run-on, which costs some readability, but there is no filler content.

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

Completeness4/5

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

For a destructive, open-world send operation with three documented parameters and an output schema, the description covers preconditions, both outcomes, and edge cases around empty or mismatched drafts. It leaves the response shape entirely to the output schema and does not call out the send_fax_link sibling, but nothing critical for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented, and the description largely restates the schema's own wording about office_id provenance and document_ids ordering. It adds the meaningful constraint that documents must be named in the order they were added, but that constraint is also present in the schema, so value beyond structured data is marginal.

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

Purpose5/5

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

States a specific verb+resource ('Sends the person's XipFax draft') and enumerates the two destination modes: an office via office_id from find_fax_number, or a raw fax number in the US, territories, or Canada. It also ties document_ids back to finant_fax_file, making the pipeline position obvious relative to siblings like add_fax_file and send_fax_link.

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 for the two outcomes: immediate dispatch only when the person has a plan and pre-authorized sending, otherwise a review/pay link, with explicit instruction never to claim it was sent. It does not explicitly name send_fax_link or the other sibling alternatives and when to prefer them, so the routing guidance is strong but incomplete.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources