Skip to main content
Glama

Upload media

chirpie_upload_media

Upload an image or a video and get back the id a post can attach. Give it either a public url for Chirpie to fetch, or data, the file's bytes as base64. The file type is read from the file's own first bytes, never from its name or a declared type, so a mislabelled file is refused rather than published. The id is valid for 7 days; attach it with media: [{ id, alt }] on chirpie_post, chirpie_thread or chirpie_update_post. A post keeps its own copy of the bytes, so it is unaffected when the id expires. Uploads are limited to 3 MB of file when sent as data, which bounds the request rather than the post; attach a larger file with media_urls instead, which has no such limit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoA public image or video URL for Chirpie to fetch and store.
dataNoThe file's bytes, base64 encoded. Use this or url, not both.
filenameNoA name to show in the dashboard. Never used to decide the file type.
idempotency_keyNoA key of your own making that makes retrying this call safe. The same key with the same request replays the first answer for 24 hours instead of sending it again; the same key with a different request is refused with 422 idempotency_key_reused, and a retry that arrives while the first is still running is refused with 409 idempotency_in_progress; a retry after the first has finished collects the replay.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the description carries real weight here and delivers: type detection from the file's own bytes rather than name/declared type, a 7-day id lifetime, the fact that a post keeps its own byte copy so expiry is harmless, and the 3 MB data limit. These are exactly the non-obvious traits an agent needs before calling.

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?

Purpose is front-loaded in the first sentence, followed by input modes, safety behavior, attachment guidance, and limits in a logical order. Every sentence carries distinct information and none repeats the structured fields verbatim.

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?

With no output schema, the description must explain the return value, and it does (the id, its 7-day validity, how to attach it). Combined with lifetime, size limits, and the byte-copy guarantee, an agent has everything needed to call this 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 nevertheless adds meaning the schema lacks, notably the 3 MB ceiling on `data` and the rationale that the bound applies to the request, not the post. The `url`/`data` exclusivity and byte-sniffing behavior largely restate schema descriptions, so it sits above baseline but not at the top.

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 opens with a specific verb and resource ('Upload an image or a video') and states the concrete outcome ('get back the id a post can attach'), which distinguishes it from the sibling post-creation tools it feeds. An agent can tell exactly what this tool produces without opening the 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 gives explicit when-to-use routing: supply either `url` or `data`, and it names the alternative path for large files ('attach a larger file with media_urls instead, which has no such limit'). It also names the three sibling tools (chirpie_post, chirpie_thread, chirpie_update_post) that consume the returned id, leaving nothing to inference.

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.