katto-mcp 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +1 -0
  2. package/index.mjs +8 -3
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -85,6 +85,7 @@ Account and reference:
85
85
  - **`katto_get_webhook_secret()`** your webhook signing secret and how to verify signed callbacks (returns a secret — treat it like a credential).
86
86
  - **`katto_list_sources()`** the video platforms Katto can clip from, with an example url each.
87
87
  - **`katto_list_clip_lengths()`** the valid target clip-length buckets.
88
+ - **`katto_list_caption_styles()`** the caption-style presets you can pass as `caption_style` when creating a job or re-rendering a clip.
88
89
 
89
90
  Jobs draw from your Katto plan's monthly video quota (25 on Creator, 2 on Free), videos up to 90 minutes. The underlying REST API also supports `Idempotency-Key` safe retries, read-only scoped keys, and signed HMAC webhooks. See the [docs](https://katto.tech/docs/api).
90
91
 
package/index.mjs CHANGED
@@ -177,7 +177,12 @@ const TOOLS = [
177
177
  type: "string",
178
178
  enum: ["face_tracking", "wide", "split_screen", "stacked", "passthrough", "grid_3", "grid_4"],
179
179
  },
180
- caption_style: { type: "string", description: "A caption style preset name." },
180
+ caption_style: {
181
+ type: "string",
182
+ // Keep in sync with CAPTION_STYLES below (katto_list_caption_styles).
183
+ enum: ["default", "hormozi", "yellowPop", "redAlert", "skyline", "bubblegum", "aqua", "violet", "headline", "centerPop", "topLime", "impactMax", "bebasGold", "robotoBold", "montserratClean", "poppinsSoft", "robotoDoc", "broadcast", "wideClean", "mono", "bebasWhite", "rainbow", "multicolor"],
184
+ description: "A caption style preset name. See katto_list_caption_styles for the labels.",
185
+ },
181
186
  },
182
187
  required: ["id", "clip_index"],
183
188
  },
@@ -259,9 +264,9 @@ const ANNOTATIONS = {
259
264
  // on tools/list — identical across all sources, enriching the terser inline text.
260
265
  const DESCRIPTIONS = {
261
266
  katto_create_clip_job: "Submit a long video (YouTube, Twitch, Vimeo, Rumble, Zoom, Dailymotion) for clipping. Consumes 1 video from your monthly quota — check katto_get_usage first. Clips are produced asynchronously; returns a job id, then poll katto_get_job until status is 'completed'. Fails if the URL is unsupported or the video is over 90 minutes.",
262
- katto_get_job: "Read-only. Get the status, progress and clips of a job by id. Each clip is { url, captions_url, title, score, final }: score is the 0-100 virality score (sort by it to rank), and final is true once the HQ 1080p render is ready — during processing you may see interim clips with final=false whose url is a preview that will be replaced. Returns 404 for an unknown id.",
267
+ katto_get_job: "Read-only. Get the status, progress and clips of a job by id. Clips come ranked by virality score (0-100, highest first; ties broken by clip_index). Each clip is { url, captions_url, title, score, clip_index, hd }: when status is 'completed' every url is a finished, downloadable clip; hd is true once the 1080p high-quality render is ready. hd=false does NOT mean broken — the url already works, the 1080p is just still rendering in the background (and stays the standard render on the free plan). The job-level hd_ready flag turns true once every clip is hd, i.e. the URLs are final and won't be swapped again (status='completed' fires earlier). Returns 404 for an unknown id.",
263
268
  katto_list_jobs: "Read-only. List your recent jobs, newest first. Paginate with 'cursor' (pass the previous next_cursor); optional 'status' filter. Returns { jobs: [{id, status, source, created_at, completed_at}], next_cursor }.",
264
- katto_get_clips: "Read-only convenience: the clips of a job as { url, captions_url, title, score, final }. Sort by score for the top N. `final` is false while a clip's HQ render is still finishing. Empty until the first clip is ready.",
269
+ katto_get_clips: "Read-only convenience: the clips of a job as { url, captions_url, title, score, clip_index, hd }, ranked by score (highest first). hd=true means the 1080p render is ready; hd=false means the url is the standard render (HD still finishing, or the free plan). Empty until the first clip is ready.",
265
270
  katto_get_usage: "Read-only. Your current plan and monthly video quota: { plan, videos_used, videos_limit, videos_remaining }. Call before katto_create_clip_job to confirm remaining quota.",
266
271
  katto_get_transcript: "Read-only. The transcript of a completed job as timestamped segments [{ start, end, text }]. Returns 404 while the job is still processing.",
267
272
  katto_cancel_job: "Cancel a still-running job (queued/processing) and refund the video back to your monthly quota. Safe to retry (idempotent). Returns an error if the job already finished, failed, or was cancelled.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "katto-mcp",
3
- "version": "0.5.5",
3
+ "version": "0.5.6",
4
4
  "mcpName": "io.github.miracleweasel/katto-mcp",
5
5
  "description": "AI video clipping MCP server: turn long videos, podcasts and Twitch VODs into scored, captioned 9:16 shorts from Claude, Cursor, ChatGPT and any MCP client.",
6
6
  "type": "module",