Media
Skill ayrshare/ayrshare-social-media-api-claude-plugin/skills/media
Use whenever someone wants to confirm an image/video is usable for a social post, or asks to "upload", "resize", or "list" media, through the Ayrshare MCP server. The only media tool is `mcp__ayrshare__validate_media`, which HEAD-checks that a media URL is reachable (it does not upload, store, or resize anything). Trigger on phrasings like "upload this image so I can post it", "check that this video URL works before posting", "resize my image for Instagram", "make this fit a story", "what is in my media library", "is this picture going to be rejected", or any time a post needs an attachment and the media is not confirmed yet, even if the user never says "Ayrshare" or names a tool. Also trigger when a post failed because of a bad or unreachable media URL. IMPORTANT: the Ayrshare MCP has NO media upload, library, or resize tool; media is referenced by public URL and `validate_media` only HEAD-checks reachability. To attach a validated media URL to a post, see `../post/SKILL.md`.From its SKILL.md
npx -y skills add ayrshare/ayrshare-social-media-api-claude-plugin --skill mediaAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.9 KB, as published. Nobody here has run it
Ayrshare MCP — Media (validation)
There is one media tool: mcp__ayrshare__validate_media. It HEAD-checks that a media URL is reachable and reports the content type, so you can confirm an image/video URL is usable before attaching it to a post.
The key concept — Ayrshare MCP does not store media. There is no upload, no media library, and no resize tool. You reference media by its public URL in a post's mediaUrls array (see ../post/SKILL.md). validate_media is how you check that URL is reachable and the right content type before posting. There is no upload/list/resize step.
If a user asks to "upload", "store in the library", or "resize for Instagram": there is no MCP tool for that. The agent must obtain a publicly hosted URL (e.g. on the user's CDN, S3, or any public host) at the correct dimensions, validate it, then attach the URL to the post. Route the user to supply a hosted URL.
- API base (REST endpoint the tool wraps):
https://api.ayrshare.com/api - Media is referenced by URL in a post's
mediaUrlsarray — see../post/SKILL.md.
Function table
| Tool | Purpose | Method + Endpoint | Required inputs | Optional inputs |
|---|---|---|---|---|
mcp__ayrshare__validate_media | HEAD-check that a media URL is reachable and report its content type, before using it in a post | POST /media/urlExists | mediaUrl (a single media URL string) | — (none) |
Per-platform media constraints to check before posting (dimensions, aspect ratios, size, duration) are in references/limits.md. Example payloads are in references/examples.md.
Auth note
validate_media only HEAD-checks that a media URL is reachable, so it is effectively profile-agnostic, and it does not take a profileKey argument (it is one of the few tools excluded from per-call profile selection). The Business API key (HTTP Bearer) is configured when the MCP server is installed; see ../getting-started/SKILL.md for installation, the full auth model, and Which tools accept profileKey.
Usage guidance
- The reliable sequence before a post with media: (1) obtain a publicly reachable URL for the media (the user's CDN/S3/any public host) — there is no upload tool; (2) call
mcp__ayrshare__validate_mediawith thatmediaUrlto confirm it's reachable and the content type is what you expect; (3) pass the validated URL(s) intomcp__ayrshare__create_post'smediaUrls. Validating first turns a post-time failure into a clear, early error. validate_mediaanswers "will this URL work at all" — is it reachable, and is it the content type you expect. It does not transform, resize, or store the media.- No resize tool — supply correctly-sized media by URL. Each network has different dimension/aspect-ratio requirements (see
references/limits.md). The agent must supply media already sized for each target platform; the MCP cannot resize. If a post targets several networks with conflicting requirements, host the correctly-sized variant for each and attach the right URL per platform.
Gotchas
- Validate BEFORE posting. The most common media failure is a bad or unreachable URL surfacing only when
mcp__ayrshare__create_postruns. Runmcp__ayrshare__validate_mediafirst to catch it early; a post referencing a URL that 404s or is the wrong content type will fail. - No upload / no library / no resize. The MCP only validates a URL. If the user wants media "uploaded", "stored", or "resized", explain there is no such tool — they must host the media at a public URL (at the right dimensions) and reference it by URL. Don't claim media was uploaded or resized.
- Constraints are per-platform — there is no resize tool to fix them. Each network has different dimension/aspect-ratio/size/duration requirements (e.g. Instagram square/portrait vs an X landscape image vs a 9:16 story). One asset is rarely valid everywhere. Check
references/limits.mdand supply a correctly-sized URL per target platform. - Media must be reachable before
create_postreferences it. Don't put an unvalidated URL inmediaUrls. Confirm withvalidate_mediafirst, then reference that URL (cross-link:../post/SKILL.md). validate_mediatakes noprofileKeyargument (it only checks a URL, so it is one of the few tools excluded from per-call profile selection). The profile-scoped tools do accept aprofileKeyargument (see getting-started).- On failure, explain — don't auto-retry. When
validate_mediareports an unreachable or wrong-type URL, surface that to the user (and usemcp__ayrshare__explain_errorif a numeric error code came back) rather than auto-retrying. A 4xx means the URL is unreachable, the wrong type, or the API key is wrong; fix the input, don't loop. A 429 gets at most one retry after a short delay. (Mirror of the global retry-safety rule — full version in getting-started.)