Skip to main content
Glama
jetapi

jetapi-mcp-server

Official
by jetapi

Send file

send_file

Send documents, images, audio, video, or contacts to a recipient on WhatsApp or Telegram. Provide the file by path, URL, or base64; files over 10MB become download links.

Instructions

Send a file (document, image, audio, video, contact) to a recipient via WhatsApp or Telegram. File is uploaded as multipart/form-data. Images under 10MB sent natively, larger files as download links active for 7 days.

Use it when the user wants to share a document, photo, voice message, video or contact card. Provide the file as exactly one of: file_path (local file), file_url (downloaded by the server) or file_base64 (with file_name).

Supported: pdf, doc, docx, ppt, pptx, xls, xlsx, zip, 7z; ogg, opus, mp3, aac, amr, 3gp; jpeg, png, webp; mp4; vcf. Max 100 MB. Recipient rules are the same as send_message.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNodocument = send as file, image = send as photo (WhatsApp/tdlib).
phoneNoRecipient phone in international format. Optional if username is used (tdlib).
captionNoDescription below the file (WhatsApp only).
file_urlNoPublic http(s) URL of the file; the server downloads and uploads it.
priorityNoSending priority. Chosen automatically if omitted.
usernameNoTelegram username (tdlib only).
utm_markNoLabel for tracking dispatches (see get_utm_tags).
file_nameNoFilename with extension, e.g. document.pdf. Defaults to the name from file_path or file_url.
file_pathNoAbsolute path of a local file to upload (~ is expanded).
customer_idNoInternal client ID.
external_idNoYour client-side ID for this message (idempotency ID).
file_base64NoFile content as base64 (a data: URL is accepted too). Requires file_name.
sender_nameNoRegistered SMS sender name (see get_balance → sender names).
callback_urlNoURL that receives the final delivery status as a POST request (retried every 2 minutes, up to 10 times, until it returns HTTP 200).
scheduled_atNoDelayed sending time, format YYYY-MM-DD HH:MM:SS in UTC+0. At least 1 minute and at most 1 month ahead.
tdlib_user_idNoTelegram user ID (positive = private chat, negative = group chat). tdlib channel only.
simulate_typingNoDefault true: show a typing indicator in WhatsApp before sending. false sends instantly.
dispatch_routingNoChannels in the order JetAPI should try them (cascade: the next channel is used only if delivery through the previous one fails). whatsapp = WhatsApp, tdlib = personal Telegram account, telegram = Telegram Bot, notify = VK/OK, max = MAX messenger, sms = SMS. If omitted, the account's default routing is used.
reply_to_message_idNoID of the message to reply to, taken from an incoming-message webhook.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.2

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses meaningful runtime behavior not present in the annotations: multipart/form-data upload, the 10MB native-image threshold, 7-day download-link expiry for larger files, the 100MB maximum, and a concrete supported-format list. It does not describe return values, failure modes, rate limits, or authentication requirements, but the basic mutating nature is already signaled by readOnlyHint=false.

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 description is front-loaded with the core purpose, then moves to usage trigger, file-source constraint, and supported formats/limits; there is little filler. The slight redundancy comes from listing the media types twice in the first two sentences, and the 'via WhatsApp or Telegram' phrasing creates a minor inconsistency with the routing parameter mentioned in the schema.

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

Completeness3/5

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

For a 19-parameter send tool with no output schema, the input semantics are largely covered by the schema plus this description. However, the description does not state what the call returns, how delivery failures are reported, or which channels actually support file sending versus link fallback. The 'via WhatsApp or Telegram' framing also leaves dispatch_routing values like sms, notify, and max unexplained, so an agent may not fully understand the routing options.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; the schema already documents all 19 parameters. The description adds value by introducing a critical one-of constraint: 'exactly one of: file_path, file_url or file_base64 (with file_name)', plus the size and format whitelist. It does not enrich the routing/scheduling parameters beyond the schema, but the added constraints meaningfully improve parameter selection.

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

Purpose4/5

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

The description clearly states the action and resource: 'Send a file (document, image, audio, video, contact) to a recipient via WhatsApp or Telegram.' It also enumerates the supported media types, which makes the tool's purpose obvious. However, the stated channel scope is narrower than the schema's dispatch_routing enum, which includes whatsapp, tdlib, telegram, notify, max, and sms, so the purpose is clear but not perfectly aligned with the schema.

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

Usage Guidelines4/5

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

The description provides an explicit usage trigger: 'Use it when the user wants to share a document, photo, voice message, video or contact card.' It also gives concrete guidance on file sourcing: 'Provide the file as exactly one of: file_path, file_url or file_base64.' It references send_message for recipient rules, but it does not explicitly state when not to use this tool or name send_message for plain-text messages, so it stops just short of full exclusion guidance.

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