Skip to main content
Glama

Convert document

mcpConvert
Read-only

Create a document in another format: docx, pptx, xlsx, odt, odp, ods, html, md or qmd. To write a new document, write Markdown and send it as content with filename "notes.md" (headings become slides in pptx). To convert an existing document, give it ONE way: fileRef: a file the user uploaded (mcp-file://docparse/file_...). file: in ChatGPT, the file the user attached (ChatGPT fills it in). content + filename: the document itself; binary files base64-encoded with contentEncoding="base64", text as plain text. input: an https:// URL of a publicly reachable document, or a sample id from mcpFormats. Which way to send a file: a file in your sandbox or workspace: call createUpload (one token PER FILE; set count for several) and run its curl line, then pass the fileRef here. curl fails with a network error, or the user wants to pick a file: call uploadDocument (the user chooses it in the AILANG Parse card). The card parses the file; it does not convert or edit it. a public https:// link; short text as content. In ChatGPT, file. Never parse the file yourself (your own script, or your own reading of it) and present that as this tool's result: if the file cannot be sent, tell the user. The result carries download_url, a link to the generated file valid for one hour: give it to the user. It also carries the file as base64 in content (encoding "base64"; text formats come back as utf8). Leave outputPath empty: the server cannot write to your filesystem.

Input Schema

NameRequiredDescriptionDefault
fileNo
inputNo
apiKeyNo
contentNo
fileRefNo
filenameNo
outputPathNo
outputFormatYes
contentEncodingNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / file
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "download_url": {
      +      "type": "string"
      +    },
      +    "file_id": {
      +      "type": "string"
      +    },
      +    "file_name": {
      +      "type": "string"
      +    },
      +    "mime_type": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "download_url",
      +    "file_id"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / fileRef
      Added value: +{
      +  "type": "string"
      +}
  2. Changed4 schema fields changed
    • addedInput schema / properties / content
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / contentEncoding
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / filename
      Added value: +{
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "input",
      -  "outputFormat"
      -]New value: +[
      +  "outputFormat"
      +]
  3. Changed1 schema field changed
    • changedInput schema / required
      Previous value: -[
      -  "input",
      -  "outputFormat",
      -  "outputPath",
      -  "apiKey"
      -]New value: +[
      +  "input",
      +  "outputFormat"
      +]
  4. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive/open-world, and the description goes further: the result carries a download_url valid for one hour, the file also comes back base64 (utf8 for text formats), and outputPath must be left empty because the server cannot write to the caller's filesystem. It omits authentication (the apiKey parameter is never mentioned) and any error/size-limit behavior, so it is strong but not complete.

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 purpose and format list are front-loaded, and the body is organized as labelled input options plus a decision list for upload paths, which is appropriate for a 9-parameter tool. It is somewhat repetitive (the 'give it ONE way' modes are restated in the which-way list) and dense, but nearly every line carries a routing constraint.

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?

With no output schema, the description still documents the return payload (download_url, base64/utf8 content), the one-hour link lifetime, and the outputPath caveat, which is what an agent needs to finish the task. Given 9 parameters and 0% schema coverage, the remaining gap is authentication (apiKey) and failure modes such as unsupported formats or oversized inputs.

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 0%, so the description carries the burden, and it does so well: it explains the mutually exclusive input modes (fileRef / file / content+filename / input) that the schema expresses only as loose optional properties, and it names the values for outputFormat and contentEncoding. The apiKey parameter is never explained, and no enum is given for outputFormat beyond the prose list.

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?

The first sentence states a specific verb+resource (create/convert a document) plus the exact output formats supported (docx, pptx, xlsx, odt, odp, ods, html, md, qmd). It also disambiguates from siblings by naming createUpload and uploadDocument as the upload paths, and mcpFormats as the sample-id source, so an agent can route without opening other schemas.

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

Usage Guidelines5/5

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

Explicit when-to-use routing is given for every input mode (fileRef for uploaded files, file for ChatGPT attachments, content+filename for inline documents, input for public https URLs or mcpFormats sample ids) and for the two upload mechanisms (createUpload vs uploadDocument, with the trigger conditions for each). It even states a negative rule: never parse the file yourself and present that as this tool's result.

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.