Skip to main content
Glama
Upload-Post

Upload-Post

Official

Upload document (LinkedIn)

upload_document

Publish PDF, PPT, PPTX, DOC, or DOCX files to LinkedIn with a required title and an approval preview before sending.

Instructions

Publish a document (PDF / PPT / PPTX / DOC / DOCX) to LinkedIn. Title is required. Needs the user's approval: call it first without confirmed to get a preview (nothing is sent), show the user exactly what will go out, and repeat the call with confirmed: true only after they approve.

Input Schema

NameRequiredDescriptionDefault
userYes
titleYes
timezoneNoIANA timezone for scheduled date, e.g. 'Europe/Madrid'.
confirmedNoSet to true only after the user has seen the preview this tool returns without it and approved it. Without it nothing is sent.
addToQueueNoInsert into the user's posting queue instead of publishing now.
asyncUploadNoReturn immediately with request_id (default true).
descriptionNo
scheduledDateNoISO 8601 date for scheduled publishing, e.g. '2026-12-25T10:00:00Z'. Omit for immediate post.
maxPostsPerSlotNo
documentPathOrUrlYes
linkedinVisibilityNo
targetLinkedinPageIdNo

Output Schema

NameRequiredDescriptionDefault
resultNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.17.2
    • addedInput schema / properties / confirmed
      Added value: +{
      +  "description": "Set to true only after the user has seen the preview this tool returns without it and approved it. Without it nothing is sent.",
      +  "type": "boolean"
      +}
  2. Changed2 schema fields changedv0.11.1
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  3. Changed4 schema fields changedv0.7.0
    • removedInput schema / properties / autogenerate
      Removed value: -{
      -  "description": "If true, AI generates native per-platform title/description from the media and fills any field left empty.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / autogenerateDescription
      Removed value: -{
      -  "description": "Generate only the description with AI.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / autogenerateLanguage
      Removed value: -{
      -  "description": "Force the AI output language (ISO code); omit to auto-detect from the media.",
      -  "type": "string"
      -}
    • removedInput schema / properties / autogenerateTitle
      Removed value: -{
      -  "description": "Generate only the title with AI.",
      -  "type": "boolean"
      -}
  4. First observedv0.4.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only say readOnly=false, destructive=false, openWorld=true; the description adds the crucial non-obvious behavior that an unconfirmed call sends nothing and returns a preview. It still does not disclose what the preview contains, how async `request_id` retrieval works, or what happens if approval is skipped.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler, and the destination/formats are front-loaded ahead of the approval workflow. Each sentence carries distinct information: what, requirement, and safety protocol.

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 12-parameter external-publishing mutation with an output schema present, the description covers what matters most: destination, required fields, and the two-phase confirmation safety model. Scheduling/queueing and visibility targeting are left entirely to schema descriptions, which is a real but modest gap.

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 coverage is only 42%, so the description must compensate; it clarifies `title` as required and fully explains the `confirmed` gate. But six parameters — `user`, `documentPathOrUrl`, `addToQueue`, `maxPostsPerSlot`, `linkedinVisibility`, `targetLinkedinPageId` — get no semantic help beyond the schema, leaving the gap partly unclosed.

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 ('Publish a document') plus the exact resource and the accepted file formats (PDF/PPT/PPTX/DOC/DOCX) on LinkedIn. The resource-plus-format framing naturally separates it from upload_text, upload_photos, and upload_video siblings without needing to name them.

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 an unusually precise when-to-call protocol: first call without `confirmed` to get a preview, then repeat with `confirmed: true` only after user approval. It does not address when to choose immediate publish vs `scheduledDate` vs `addToQueue`, so the alternatives space is only partially covered.

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