# Shortform Kit

> Transcribe, read and download public Reels, TikToks and YouTube videos, plus sourced creator data

- name: io.github.diegobruegger-prog/shortformkit
- version: 1.0.1
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 75/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.diegobruegger-prog%2Fshortformkit
- tools: https://api.protogrid.dev/v1/servers/io.github.diegobruegger-prog%2Fshortformkit/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "shortformkit": {
      "type": "http",
      "url": "https://shortformkit.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-5d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 75/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,419 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 9 tool changes in 30 days
- fail `stability.rug_pull`: 8 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 2,419 tokens to load them all
- tool set hash: 43b5735161e692891a172cee7263d9a5
- tools last changed: 2026-10-16T04:02:19.084Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.diegobruegger-prog/shortformkit.svg)](https://protogrid.dev/servers/io.github.diegobruegger-prog/shortformkit)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-16 `estimate_youtube_earnings` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Estimate YouTube ad earnings (USD range per month and year) from monthly views and niche, or for Shorts.
  - after: Estimate YouTube ad revenue for a channel from its monthly views. Returns the RPM range in USD, monthly and yearly USD ranges, the model used and a link to the interactive calculator. Ads only, no sponsorships or memberships. Use creator_monetization for the underlying RPM tables and program requirements.
- 2026-10-16 `youtube_thumbnail_trends` changed (title, description, inputSchema, annotations)
  - before: This week's measured thumbnail trends of the most-viewed new YouTube videos in 10 niches: share with faces, text, big text, brightness, colours, title length, plus top examples.
  - after: Get this week's measured thumbnail trends of the most-viewed new YouTube videos in 10 niches: share of thumbnails with faces, text and big text, brightness, dominant colours, title length, plus top example videos. Without a niche it returns the overall stats and the list of niches. Use it when designing or reviewing a thumbnail; the data refreshes weekly.
- 2026-10-16 `loudness_and_subtitles` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Loudness targets (LUFS, true peak) for Spotify, Apple Music, YouTube, Netflix, Prime Video, EBU R128, ATSC, podcasts and social video; subtitle rules (Netflix, BBC); frame rates and drop frame. Each value sourced.
  - after: Look up delivery standards for audio and captions. topic=loudness_targets gives integrated loudness (LUFS) and true-peak limits for Spotify, Apple Music, YouTube, Netflix, Prime Video, EBU R128, ATSC A/85, podcasts and social video; subtitle_standards gives characters per line, lines, reading speed and timing rules (Netflix, BBC and others); frame_rates_timecode explains frame rates and drop-frame timecode. Every value sourced. Use it when mixing, exporting or captioning for a platform. Offline data, max 40 rows.
- 2026-10-16 `creator_monetization` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Sourced 2026 data on creator monetization: platform programs and requirements, YouTube/TikTok RPM by niche or country, engagement-rate benchmarks, sponsored post rates.
  - after: Look up sourced 2026 creator-income data. topic=programs lists monetization programs with eligibility (subscribers, watch hours, views) and status; rpm_by_niche and rpm_by_country give earnings per 1,000 views as low, high and median; engagement_benchmarks gives typical engagement rates; sponsorship_rates gives price ranges per post. Every row carries its sources. Use it to answer 'how much does X pay' or 'what do I need to monetize'; for a concrete earnings estimate from a view count use estimate_youtube_earnings instead. Offline data, max 40 rows.
- 2026-10-16 `social_video_specs` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: 2026 upload specs (aspect ratio, resolution, max length, file size, caption and hashtag limits) for Instagram, TikTok, YouTube, Facebook, X, LinkedIn, Pinterest, Snapchat and Threads, each with official sources.
  - after: Look up 2026 upload specs for Instagram, TikTok, YouTube, Facebook, X, LinkedIn, Pinterest, Snapchat and Threads: aspect ratio, resolution, max length, file size, caption and hashtag limits, each row with official source links, plus recent spec changes. Use it before exporting or cropping a video for a platform. Offline data, no network calls; empty filters return every row.
- 2026-10-16 `youtube_channel_id` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Find the YouTube channel ID (UC...), handle, channel URL and RSS feed from a @handle, channel link or any video link.
  - after: Resolve a YouTube channel to its permanent channel ID (UC...). Returns channel ID, name, handle, channel URL and the RSS feed URL. Use it when an API, embed, RSS reader or analytics tool needs the UC ID; any video link of the channel works too. Not for statistics like subscriber counts.
- 2026-10-16 `transcribe_video` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Transcribe a public video or Reel with Whisper (90+ languages, optional translation to English, optional section). Returns the text with timestamps. Videos up to 20 minutes per run.
  - after: Transcribe the speech of a public video, Reel, TikTok or Short with Whisper on the server. Returns the plain text plus segments with start and end times; waits up to 4 minutes, otherwise returns job_status_url to poll. Use it for captions, quotes, summaries or hooks; use get_video_info if you only need the written caption. Up to 20 minutes of audio per run, one transcription at a time server-wide, so cut long videos with start/end.
- 2026-10-16 `download_media` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Prepare a download of a public post: video (MP4), audio (MP3), image, thumbnail/cover, or a frame at a timestamp. Optional trim with start/end (e.g. '1:05'). Returns a download URL valid for 15 minutes. Only for content the user owns or may use.
  - after: Create a temporary download of a public post. Returns a job object with status and, when done, download_url (valid 15 minutes) plus job_status_url to poll if it is still running after about 100 seconds. Use kind=video for MP4, audio for MP3, image for photo posts and carousels, thumbnail for the cover, frame for a still at one timestamp. For the spoken text use transcribe_video instead. Videos up to 4 hours; only for content the user owns or may use.
- 2026-10-16 `get_video_info` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Read a public Instagram, YouTube, TikTok, X, Facebook, Pinterest, Threads, Vimeo or Reddit post: title, author, duration, available qualities, caption and hashtags.
  - after: Read the metadata of a public Instagram, YouTube, TikTok, X, Facebook or Pinterest post without downloading it. Returns platform, title, uploader, duration in seconds, available video heights, whether it has video/audio, gallery size, caption, hashtags and thumbnail URL. Use it first to check a link or pick a quality; use download_media to get the file and transcribe_video for the spoken words. Shares the website's limit of 30 requests per minute.

Full history: https://api.protogrid.dev/v1/servers/io.github.diegobruegger-prog%2Fshortformkit/changes

## Remotes

- https://shortformkit.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (9)

- `creator_monetization`: Look up sourced 2026 creator-income data. topic=programs lists monetization programs with eligibility (subscribers, watch hours, views) and status; rpm_by_niche and rpm_by_country give earnings per 1,000 views as low, high and median; engagement_benchmarks gives typical engagement rates; sponsorship_rates gives price ranges per post. Every row carries its sources. Use it to answer 'how much does X pay' or 'what do I need to monetize'; for a concrete earnings estimate from a view count use estimate_youtube_earnings instead. Offline data, max 40 rows.
- `download_media`: Create a temporary download of a public post. Returns a job object with status and, when done, download_url (valid 15 minutes) plus job_status_url to poll if it is still running after about 100 seconds. Use kind=video for MP4, audio for MP3, image for photo posts and carousels, thumbnail for the cover, frame for a still at one timestamp. For the spoken text use transcribe_video instead. Videos up to 4 hours; only for content the user owns or may use.
- `estimate_youtube_earnings`: Estimate YouTube ad revenue for a channel from its monthly views. Returns the RPM range in USD, monthly and yearly USD ranges, the model used and a link to the interactive calculator. Ads only, no sponsorships or memberships. Use creator_monetization for the underlying RPM tables and program requirements.
- `get_video_info`: Read the metadata of a public Instagram, YouTube, TikTok, X, Facebook or Pinterest post without downloading it. Returns platform, title, uploader, duration in seconds, available video heights, whether it has video/audio, gallery size, caption, hashtags and thumbnail URL. Use it first to check a link or pick a quality; use download_media to get the file and transcribe_video for the spoken words. Shares the website's limit of 30 requests per minute.
- `loudness_and_subtitles`: Look up delivery standards for audio and captions. topic=loudness_targets gives integrated loudness (LUFS) and true-peak limits for Spotify, Apple Music, YouTube, Netflix, Prime Video, EBU R128, ATSC A/85, podcasts and social video; subtitle_standards gives characters per line, lines, reading speed and timing rules (Netflix, BBC and others); frame_rates_timecode explains frame rates and drop-frame timecode. Every value sourced. Use it when mixing, exporting or captioning for a platform. Offline data, max 40 rows.
- `social_video_specs`: Look up 2026 upload specs for Instagram, TikTok, YouTube, Facebook, X, LinkedIn, Pinterest, Snapchat and Threads: aspect ratio, resolution, max length, file size, caption and hashtag limits, each row with official source links, plus recent spec changes. Use it before exporting or cropping a video for a platform. Offline data, no network calls; empty filters return every row.
- `transcribe_video`: Transcribe the speech of a public video, Reel, TikTok or Short with Whisper on the server. Returns the plain text plus segments with start and end times; waits up to 4 minutes, otherwise returns job_status_url to poll. Use it for captions, quotes, summaries or hooks; use get_video_info if you only need the written caption. Up to 20 minutes of audio per run, one transcription at a time server-wide, so cut long videos with start/end.
- `youtube_channel_id`: Resolve a YouTube channel to its permanent channel ID (UC...). Returns channel ID, name, handle, channel URL and the RSS feed URL. Use it when an API, embed, RSS reader or analytics tool needs the UC ID; any video link of the channel works too. Not for statistics like subscriber counts.
- `youtube_thumbnail_trends`: Get this week's measured thumbnail trends of the most-viewed new YouTube videos in 10 niches: share of thumbnails with faces, text and big text, brightness, dominant colours, title length, plus top example videos. Without a niche it returns the overall stats and the list of niches. Use it when designing or reviewing a thumbnail; the data refreshes weekly.
