Skip to main content
Glama
XcrapCC

@xcrap/mcp

Official
by XcrapCC

List media attached to an X post

xcrap_list_media
Read-onlyIdempotent

List every downloadable photo, video, or GIF attached to a post. Returns metadata (type, dimensions, duration, alt text) and direct download URLs for each variant.

Instructions

List every downloadable file attached to a post — photos, videos and GIFs — with type, dimensions, duration, alt text, every available quality variant, and a direct download URL for each.

Use this when the user wants the image or the video from a post rather than its text: "download the video from this tweet", "what images are in this post", "get me the alt text". The download URLs it returns stream the original file straight from X and can be handed to the user or fetched directly.

When to use this instead of the alternatives:

  • Use xcrap_get_tweet if you want the post's text and only need to know whether media exists.

  • Use this when you need the actual file URLs, resolutions or alt text.

Args:

  • url (string, required): post URL or numeric id.

Returns JSON (media metadata is field-level data, so this tool does not offer a markdown mode): { tweet_id, tweet_url, author, count, media: [ { id, type: "photo"|"video"|"gif", url, thumbnail_url, width, height, duration, format, alt_text, variants[ {url, container, bitrate} ], index, download_url } ] }

A post with no attachments returns count: 0 and an empty media array — that is a successful answer, not an error.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesPost URL or bare numeric id whose attachments to list.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds valuable context beyond annotations: it explains that download URLs stream original files directly from X, that the tool returns JSON only (no markdown mode), and that an empty media array with count 0 is a successful response, not an error. This gives the agent clear expectations about output and edge cases. It does not mention error conditions or rate limits, but annotations cover the safety profile, making a 4 appropriate.

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 longer than strictly necessary but well-structured: it opens with the core purpose, then usage guidance, then argument list, then return format. The front-loading is effective, and each section earns its place. While it could be trimmed slightly, it is organized and easy to scan, with no irrelevant content.

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?

The tool is simple (one parameter, no output schema), and the description covers everything needed: the exact return JSON structure, the behavior for empty posts, and the distinction from the sibling tool. The agent has all information required to correctly invoke this tool and interpret results. No critical information is missing, making it fully complete for this context.

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?

The single parameter 'url' is fully described in the schema ('Post URL or bare numeric id whose attachments to list') and reiterated in the description. Since schema coverage is 100%, the description does not need to add much; it repeats the same information without adding new semantic meaning. The baseline of 3 is correct when the schema already documents the parameter fully.

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 a specific verb and resource: it lists all downloadable media (photos, videos, GIFs) attached to a post, with detailed attributes. It explicitly differentiates from sibling xcrap_get_tweet by noting that this tool returns actual file URLs and alt text, whereas the sibling only indicates whether media exists. The purpose is unambiguous and leaves no doubt about the tool's function.

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?

The description provides explicit when-to-use guidance with concrete examples like 'download the video from this tweet' and 'what images are in this post'. It names the alternative xcrap_get_tweet and gives a clear condition for choosing it: use xcrap_get_tweet if only the post's text or media existence is needed, otherwise use this tool. This is textbook usage guidance with no ambiguity.

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