Skip to main content
Glama

Upload media

upload_media

Upload media (image, video, GIF, PDF) and return CDN URLs for contents[].media_urls in create_post / update_post. Media is uploaded before the post that references it is created.

The returned cdn_url is the media URL, used exactly as returned. A media URL assembled from media_id, a filename or a path points at no stored object, and the post is created without its media.

Source types: • 'url' — media already hosted at a public CDN URL (not a social-media page URL). Downloads server-side. Up to 250 MB. Works everywhere and is the best fit on the hosted server. Larger files go through the file_manager upload widget or PosteySkills. • 'base64' — small files (under 5 MB recommended, 20 MB decoded hard cap). Works everywhere. • 'local_path' — local CLI only. Uploads a file from the local machine via the PosteySkills CLI (chunked upload above 50 MB, per-platform validation). Requires PosteySkills installed locally (npx skills add posteyai/skills) and works with the credential already in use, OAuth or API key. Not available on the hosted server, which cannot see the local filesystem.

When running locally with PosteySkills, local_path is the fastest option for on-disk files (any size, no encoding). Subject to plan storage quota.

Media uploaded here cannot currently be deleted through this server; there is no delete tool on the MCP surface.

list_files reads the file_manager widget's own index and does not show upload_media uploads, so the cdn_url this returns cannot be recovered there.

Input Schema

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

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 important behavioral traits: uploads cannot be deleted through this server, list_files does not show upload_media results, the cdn_url must be used exactly as returned, and local_path requires PosteySkills plus either OAuth or API-key auth. It also describes size limits, chunked uploads, per-platform validation, and storage quota constraints.

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 purpose and workflow, then organized by source type in scannable bullets. It is somewhat repetitive because source-type details appear both in the bullet list and in the source_type parameter discussion, but the length is justified by the tool's multiple upload modes and environment constraints.

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 complexity of three source modes, local vs hosted execution, auth requirements, size limits, and the lack of a delete path, the description is thorough. An output schema exists, so return values need not be re-explained, and the description still covers the critical integration context for create_post/update_post.

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?

The description adds substantial meaning beyond the schema by explaining the tradeoffs and constraints of the source_type enum values, including environment availability and size caps. It does not cover every nested parameter (e.g., content_type and enable_conversion are left to the schema), but its parameter guidance is otherwise strong.

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 states a specific verb and resource ('Upload media') and immediately clarifies the workflow: it returns CDN URLs consumed by create_post/update_post and must happen before the post is created. It also distinguishes this tool from file_manager and list_files by explaining that upload_media outputs are not visible in the file manager index.

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?

It gives explicit source-type selection guidance: 'url' is preferred on the hosted server, 'base64' is for small files, and 'local_path' is local CLI only with PosteySkills installed. It also names concrete alternatives for larger files ('file_manager upload widget or PosteySkills') and states when each mode is not available.

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.

Resources