Botverse Convert

Convert documents between formats. Submit a job, poll for completion, get a download URL. Flat fee — no per-minute billing.

MCP endpoint
https://botverse.cloud/mcp
Auth
X-API-Key header
Max file size
100 MB (upload) / 5 MB (inline)
Price
$0.10 flat per file
Typical completion
2–8 seconds

Supported formats

Formatoutput_formatInputOutput
Worddocx
PDFpdf
HTMLhtml
Markdownmd
reStructuredTextrst
Plain texttxt
Excel (tables)xlsx
PDF is output-only — Botverse converts to PDF but does not accept PDF as input. Excel (xlsx) extracts and preserves tables found in the source document.

Which tool to use

SituationRecommended tool
Content is already a string in memory (e.g. Markdown you just generated)convert_content — fastest, no upload step
File is at a public URL (CDN, S3, Google Drive share)convert_from_url — one call, no upload step
File is on the user's machine (up to 100 MB)get_upload_url → PUT → convert_file

Tools

convert_content

Convert document content passed inline as a string — no upload step. Best when you already have the content in memory (e.g. Markdown you just generated or read from a file). Completes in ~2–5 seconds.

Parameters
NameTypeReqDescription
contentstringyesFile content as a plain text string (md, html, rst, txt) or base64-encoded bytes (docx).
input_formatstringyesSource format: md | html | rst | txt | docx
output_formatstringyesTarget format: docx | pdf | html | txt | md | rst | xlsx
encodingstringnoContent encoding. Default: "text". Use "base64" for binary inputs like .docx.
Response fields
FieldTypeDescription
job_idstringPoll get_job_status with this.
statusstring"pending" on success.
convert_from_url

Fetch a document from a public HTTPS URL and convert it. Use when the source file is already hosted online.

Parameters
NameTypeReqDescription
source_urlstringyesPublic HTTPS URL of the source document. Must be a direct download link.
output_formatstringyesTarget format: docx | pdf | html | txt | md | rst | xlsx
Response fields
FieldTypeDescription
job_idstringPoll get_job_status with this.
statusstring"pending" on success.
convert_file

Convert an already-uploaded file. Use get_upload_url first, PUT the raw bytes, then call convert_file with the object_key.

Parameters
NameTypeReqDescription
object_keystringyesThe object_key returned by get_upload_url.
output_formatstringyesTarget format: docx | pdf | html | txt | md | rst | xlsx
Response fields
FieldTypeDescription
job_idstringPoll get_job_status with this.
statusstring"pending" on success.
get_job_status

Poll the status of a convert job. Call every 5 seconds until status is 'complete' or 'failed'.

Parameters
NameTypeReqDescription
job_idstringyesJob ID from any convert tool.
Response fields
FieldTypeDescription
job_idstringThe job ID.
statusstring"pending" | "processing" | "complete" | "failed".
job_costnumberCost in USD. Always $0.10 for convert jobs.
errorstringError message. Present only when failed.
get_download_url

Get a presigned URL to download the converted file. Call after get_job_status returns 'complete'. URL expires in 24 hours.

Parameters
NameTypeReqDescription
job_idstringyesJob ID of a completed job.
Response fields
FieldTypeDescription
download_urlstringPresigned GET URL. Expires in 24 hours.
expires_innumberSeconds until the URL expires.

Example — convert inline Markdown to DOCX

The most common pattern: the agent has Markdown content already in memory and needs to produce a Word document.

Step 1 — submit the job

Agent calls convert_content
{
  "name": "convert_content",
  "arguments": {
    "content": "# Meeting Notes\n\nAttendees: Alice, Bob\n\n## Actions\n- Alice: send proposal",
    "input_format": "md",
    "output_format": "docx"
  }
}

// Botverse returns:
{
  "job_id": "job_a1b2c3d4",
  "status": "pending",
  "message": "Convert job queued. Poll get_job_status with job_id until status is \"complete\", then call get_download_url."
}

Step 2 — poll for completion

Agent polls get_job_status
// ~3 seconds later:
{
  "job_id": "job_a1b2c3d4",
  "status": "complete",
  "job_cost": 0.10,
  "completed_at": "2026-05-22T15:18:04Z"
}

Step 3 — get download URL

Agent calls get_download_url
{ "name": "get_download_url", "arguments": { "job_id": "job_a1b2c3d4" } }

// Returns:
{
  "download_url": "https://botverse-files.s3.us-east-2.amazonaws.com/outputs/...?X-Amz-...",
  "expires_in": 86400
}
The agent can pass the download URL directly to the user. See the Workflows guide for chaining Convert with Transcode in a single pipeline.