Skip to main content
Glama

Batch Upload PDFs

batch_upload_pdf

Upload multiple PDF files from ChatGPT file attachments.

Use this when the user provides multiple file attachments in ChatGPT. Downloads each PDF from its signed URL and stores it. Returns session_id and a list of job_ids.

Like upload_pdf, this ONLY works on hosts that resolve chat attachments for you (ChatGPT). On Claude and other MCP clients, call create_upload_page instead. Never invent or guess a download_url or file_id.

MANDATORY WORKFLOW before calling this tool:

  1. ALWAYS call check_upload_status FIRST — even if you think the files are new.

  2. Only include files confirmed absent from check_upload_status. If ALL files are already uploaded, skip batch_upload_pdf entirely and reuse the existing job_ids.

  3. Reuse job_ids from already_uploaded — do NOT re-upload those files. Skipping step 1 and calling batch_upload_pdf directly is FORBIDDEN.

After batch_upload_pdf completes: if the user requested a comparison, call 'compare_pdfs' with the returned job_ids immediately.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pdf_filesYesThe file attachments, supplied by the host.
session_idNoExisting session ID to group these files. If omitted, a new session is created.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
jobsYes
file_countYes
reply_noteYes
session_idYes
instructionsYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses key behavioral details: it downloads each PDF from its signed URL, stores it, returns session_id/job_ids, and warns against inventing download_url/file_id. It also states the preconditions and the follow-up action, giving a clear operational model without contradicting annotations.

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 well-structured with clear sections and front-loaded purpose. It is verbose but each sentence adds value, especially the mandatory workflow. Minor redundancy exists in the opening two sentences (function statement and usage context), preventing a perfect score.

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

Completeness5/5

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

Given the tool's complexity and the presence of an output schema, the description is thorough. It covers host restrictions, the required pre-step (check_upload_status), how to handle already-uploaded files, and the post-condition (call compare_pdfs if needed). This is complete for an agent to invoke correctly.

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 coverage is 100%, so the baseline is 3. The description adds extra semantics by instructing 'Never invent or guess a download_url or file_id' and emphasizing that only files confirmed absent from check_upload_status should be included. This provides practical meaning beyond the field descriptions.

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 description clearly states the tool's function with a specific verb and resource: 'Upload multiple PDF files from ChatGPT file attachments.' It distinguishes itself from upload_pdf and create_upload_page by noting host-specific compatibility, which clarifies its unique scope.

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 usage guidance is provided: use it when the user supplies multiple file attachments in ChatGPT, and use create_upload_page on non-ChatGPT hosts. The MANDATORY WORKFLOW precisely instructs to call check_upload_status first, skip if all files are already uploaded, and reuse job_ids, with strict warnings against direct invocation.

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.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: uploads are split by context (single, batch, widget), content inspection is split by method (text, images, redaction lines), and password operations are split by state (set vs change). Descriptions explicitly cross-reference to prevent confusion.

Naming Consistency4/5

All tools start with a verb (upload, check, compare, compress, create, delete, get, list, redact, set, change, view), but the position of 'pdf' varies (suffix in compress_pdf, middle in get_pdf_info) and some names are compound like 'batch_upload_pdf' and 'get_latest_comparison'. Pattern is readable but not perfectly uniform.

Tool Count4/5

16 tools is slightly above the ideal 3-15 range, but each tool maps to a distinct operation or workflow step in PDF handling. The count feels justified given the breadth of features (upload, compress, delete, password, redact, compare).

Completeness4/5

The surface covers the core PDF lifecycle: upload, view, compress, delete pages, password protection, redaction, and comparison. Minor gaps exist (no merge, split, or rotate), but the primary workflows are fully supported with mandatory pre/post checks.