Skip to main content
Glama

Attach file to post

attach_media
Destructive

Attach one image or video from ChatGPT to an existing personal post. Pass the file reference (including a generated image if the client supports it); ChatGPT resolves it to a temporary download URL via openai/fileParams. Never invent a download URL or pass a sandbox path/base64 as a URL; if the client cannot resolve the file, use a real public mediaUrls URL or upload local bytes. Publora downloads, validates and stores the bytes immediately. Optional fileName overrides the original name for SEO. Leaves the post in draft, demoting scheduled posts; never publishes. No HTTP PUT or complete_media is needed. Supports jpeg, png, gif, webp, tiff, avif (up to 25MB), mp4, mov, webm (up to 150MB). Verify the ready attachment with get_post and schedule separately only if requested. Retries for the same post/file ID are deduplicated for 24 hours even if the temporary URL changes.

Input Schema

NameRequiredDescriptionDefault
fileYes
fileNameNoOptional descriptive file name with extension, e.g. temporary-lpn-jobs-connecticut.png; overrides file.file_name. The basename is sanitized for storage.
postGroupIdYesExisting post group ID; create a draft first if needed
idempotencyKeyNoOptional explicit retry key. Defaults to a stable key for this post and file ID. Reuse the same key, file ID and file name when retrying; the download URL may change.

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?

With annotations covering safety flags, the description still adds substantial context: it leaves the post in draft, demotes scheduled posts, never publishes, downloads/validates/stores bytes immediately, and deduplicates retries for the same post/file ID for 24 hours. It also enumerates formats and size ceilings (25MB images, 150MB video), which is behavioral information no annotation carries.

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?

Purpose is front-loaded in sentence one and every sentence carries operational content, but the block is dense and packs URL rules, format limits, state changes, follow-up steps and dedup into one long run of text without visual grouping. Slightly heavier than necessary, though nothing is wasted.

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?

For a mutation tool with nested parameters, no output schema, and destructive side effects, the description is complete: it explains input resolution, validation, storage, resulting post state, limits, and how to verify the result via get_post. An agent has everything needed to call it 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 75% and the description meaningfully supplements it: it explains that 'file' is a ChatGPT-supplied reference resolved via openai/fileParams, gives a hard constraint on download_url ('never invent... sandbox path/base64'), and explains fileName's SEO override purpose. Only the idempotencyKey semantics are left largely to the schema description.

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 precise verb and resource: 'Attach one image or video from ChatGPT to an existing personal post.' It distinguishes itself from create_post (attachment to an existing post), complete_media (explicitly declared unnecessary), and update_post without requiring the agent to open any schema.

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 states when to use it, when not to (don't invent a download URL, don't pass sandbox/base64 as a URL), the fallback path ('use a real public mediaUrls URL or upload local bytes'), and the follow-up path ('verify with get_post and schedule separately only if requested'). Alternatives such as complete_media are named explicitly.

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.