{
  "name": "shortsintel",
  "title": "ShortsIntel",
  "version": "1.0.0",
  "description": "Short-form video intelligence: search, enrich, score and track public videos on TikTok, Instagram Reels and YouTube Shorts. Priced per operation and prepaid; every paid tool accepts `estimate` so an agent can quote a price before spending.",
  "websiteUrl": "https://www.shortsintel.com",
  "documentationUrl": "https://www.shortsintel.com/docs/mcp",
  "connectInstructionsUrl": "https://www.shortsintel.com/agents.md",
  "privacyPolicyUrl": "https://www.shortsintel.com/privacy",
  "termsOfServiceUrl": "https://www.shortsintel.com/terms",
  "contactEmail": "support@shortsintel.com",
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://www.shortsintel.com/api/mcp"
    }
  ],
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "authorization": {
    "schemes": [
      "bearer",
      "oauth2"
    ],
    "bearer": {
      "description": "An API key from the console, sent as `Authorization: Bearer sk_live_...`.",
      "tokenSource": "https://www.shortsintel.com/console/keys"
    },
    "oauth2": {
      "protectedResourceMetadata": "https://www.shortsintel.com/.well-known/oauth-protected-resource/api/mcp",
      "authorizationServerMetadata": "https://www.shortsintel.com/.well-known/oauth-authorization-server"
    }
  },
  "tools": [
    {
      "name": "research",
      "title": "Research a niche",
      "description": "Use when the Customer asks what is working in a niche: one Run searches TikTok, Instagram and YouTube (Facebook if in platforms), analyses and ranks the top videos, and returns a Digest (themes, hooks, formulas, gaps, angles) with ranked ids.\nNot for a quick page of videos or one phrase's stats: search_videos or get_keyword cost far less. Named Creators: breakdown. Re-read with get_research (free).\nPrice: 1,036 credits for up to 50 enriched videos, then 20 credits each, at most 4,036 credits.\n1-3 minutes for 50 videos: waits up to 60 s, then returns a run id for get_run. estimate=true quotes.",
      "annotations": {
        "title": "Research a niche",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "1,036 credits for up to 50 enriched videos, then 20 credits each, at most 4,036 credits",
      "paid": true
    },
    {
      "name": "get_research",
      "title": "Read a research",
      "description": "Use when you have a research or breakdown run id and want its digest, videos, creators, hashtags or sounds, filtered or sorted (e.g. TikTok only, over 100k views, best outlier first).\nNot for collecting new data: use research or breakdown (charged, takes minutes). For a Run still running, use get_run.\nPrice: Free.\naspect picks the read (default videos). Each filter names the aspects that take it; others are refused. Numbers are as the research saw them; as_of=latest for the newest.",
      "annotations": {
        "title": "Read a research",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "breakdown",
      "title": "Creator Breakdown",
      "description": "Use when the Customer names Creators (handles, profile URLs or a Collection), asking what works for them: a Creator Breakdown reads their recent videos, analyses all, scores each against its own Creator's median, returns one Digest with ranked ids.\nNot for a niche or topic: use research. Not for one Creator's profile: use get_creator. Re-read with get_research (free).\nPrice: 9 credits per creator plus 20 credits per video analysed, at most 4,090 credits.\nUp to 10 creators, 25 videos each by default (max 50, 200 in all). Waits up to 60 s, then returns a run id for get_run. estimate=true quotes.",
      "annotations": {
        "title": "Creator Breakdown",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "9 credits per creator plus 20 credits per video analysed, at most 4,090 credits",
      "paid": true
    },
    {
      "name": "search_videos",
      "title": "Search videos",
      "description": "Use when you need a page of videos matching a query across TikTok, Instagram and YouTube (Facebook opt-in).\nNot for a ranked, analysed niche answer: use research. Not for one phrase's stats and trend on one platform: use get_keyword.\nPrice: 3 credits per platform per page (9 credits for the default three); +20 credits per video analysed with intelligence=true (top 20); focus +3 credits per video judged, +1 credit per must_mention rejection.\nUp to 30 a page (default 25); next_cursor pages. Instagram and Facebook are best-effort. Videos over 10 minutes are not analysed.",
      "annotations": {
        "title": "Search videos",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "3 credits per platform per page (9 credits for the default three); +20 credits per video analysed with intelligence=true (top 20); focus +3 credits per video judged, +1 credit per must_mention rejection",
      "paid": true
    },
    {
      "name": "get_video",
      "title": "Get a video",
      "description": "Use when you have one video (URL, or platform + id) and need its metadata, stats, Scores, analysis, transcript or file.\nNot for its comments: use get_comments. Not for an outlier verdict: use score_video.\nPrice: 3 credits plain; include intelligence 23 credits instead; transcript only 10 credits instead; download 3 credits alone, else +3 credits.\ninclude intelligence: the full analysis (hook, CTA, tone, timed transcript, timed scenes); transcript: the speech alone; download: a file link (download_expires_at). Over 10 minutes: video_too_long; gone or private: media_unavailable; uncharged.",
      "annotations": {
        "title": "Get a video",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "3 credits plain; include intelligence 23 credits instead; transcript only 10 credits instead; download 3 credits alone, else +3 credits",
      "paid": true
    },
    {
      "name": "get_comments",
      "title": "Get a video's comments",
      "description": "Use when you need what viewers say about one video: a page of its comments (text, likes, reply count, never the author), with analyze its sentiment and themes.\nNot for one comment's thread: use get_comment_replies. Not for the video itself: use get_video.\nPrice: 3 credits per page; +10 credits with analyze.\nBy URL or platform + id, on TikTok, Instagram, YouTube or Facebook. limit 1-100 (default 25); pass next_cursor as cursor.",
      "annotations": {
        "title": "Get a video's comments",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "3 credits per page; +10 credits with analyze",
      "paid": true
    },
    {
      "name": "get_comment_replies",
      "title": "Get a comment's replies",
      "description": "Use when a comment get_comments returned has a thread (reply_count > 0 on TikTok and Facebook; Instagram may say 0 and still have one) and you need its replies.\nNot for top-level comments: use get_comments first; a comment it has not listed is comment_not_found, uncharged.\nPrice: 3 credits per page.\nPass the video (URL or platform + id) and comment_id. limit 1-100 (default 25); next_cursor is null at the end. A platform without replies is unsupported_platform.",
      "annotations": {
        "title": "Get a comment's replies",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "3 credits per page",
      "paid": true
    },
    {
      "name": "score_video",
      "title": "Score a video",
      "description": "Use when you need whether one video is an outlier for its creator: outlier multiple (views over the creator's median), velocity (views per hour since posting) and percentile.\nNot for the video's metadata or analysis: use get_video. Not for the creator's baseline: use get_creator.\nPrice: 9 credits.\nBy URL or platform + id. Fetches the creator's recent videos when no baseline exists yet.",
      "annotations": {
        "title": "Score a video",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "9 credits",
      "paid": true
    },
    {
      "name": "get_creator",
      "title": "Get a creator",
      "description": "Use when you need one creator's profile: followers, published contact, baseline (median views, engagement, cadence) and Scores; include: ['videos'] adds recent videos.\nNot for watching them over time: use track. Not for one of their videos: use get_video or score_video.\nPrice: 6 credits; videos pages 3 credits; intelligence=true: free page, +20 credits per analysed video (top 20).\ncontact is what the account publishes; follow anti-spam law when using it. next_cursor pages videos. intelligence: true analyses its stored videos (fetch include: ['videos'] first).",
      "annotations": {
        "title": "Get a creator",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "6 credits; videos pages 3 credits; intelligence=true: free page, +20 credits per analysed video (top 20)",
      "paid": true
    },
    {
      "name": "get_hashtag_or_sound",
      "title": "Get a hashtag or sound",
      "description": "Use when you need one hashtag's or sound's totals, trend direction, top videos and latest Snapshot (a sound adds artists, is_commercial for ads, release date).\nNot for a search phrase: use get_keyword. Not for watching it daily: use track.\nPrice: hashtag 3 credits, sound 6 credits.\nkind hashtag or sound; ref is the tag or sound id. videos: true pages its videos instead, always fresh, at the same price per page; pass next_cursor as cursor.",
      "annotations": {
        "title": "Get a hashtag or sound",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "hashtag 3 credits, sound 6 credits",
      "paid": true
    },
    {
      "name": "get_keyword",
      "title": "Get a keyword",
      "description": "Use when you need one search phrase's sample stats, trend since the last lookup and top 10 videos by views, on one platform (tiktok, instagram, youtube or facebook).\nNot for results across platforms: use search_videos. Not for an analysed niche answer: use research. To watch daily: track kind=keyword.\nPrice: 3 credits; focus +3 credits per video judged, +1 credit per must_mention rejection.\nOne page of the platform's search (relevance, past month): a sample, not platform totals; a lookup under 24 h old answers at the same price. focus hides off-focus top videos; stats stay unfiltered.",
      "annotations": {
        "title": "Get a keyword",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "3 credits; focus +3 credits per video judged, +1 credit per must_mention rejection",
      "paid": true
    },
    {
      "name": "search_ads",
      "title": "Search ad libraries",
      "description": "Use when you need Meta, TikTok or Google Ads by query or advertiser (one).\nNot for one Ad or an Advertiser's profile: use get_ad. To watch an Advertiser: track.\nPrice: Meta 1 credit per Ad delivered; TikTok 3 credits per page; Google 3 credits per Ad; +20 credits per Ad analysed.\nMeta: status, kind, media_type, placements, started_after/before, limit; order_by winner. analyze: first 50. TikTok: EU/EEA, CH, UK and Turkey only; advertiser: id, library URL or name (advertiser_ambiguous: candidates, free).",
      "annotations": {
        "title": "Search ad libraries",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "Meta 1 credit per Ad delivered; TikTok 3 credits per page; Google 3 credits per Ad; +20 credits per Ad analysed",
      "paid": true
    },
    {
      "name": "get_ad",
      "title": "Get an Ad or Advertiser",
      "description": "Use when you need one Ad or Advertiser, in exactly one of five modes: library_id (Meta Ad), page_id (Meta Advertiser), advertiser_id (TikTok or Google Advertiser), tiktok_ad_id (TikTok Ad) or google_ad_id (Google Ad).\nNot for finding Ads: use search_ads (advertiser=page_id).\nPrice: Ad 3 credits, +20 credits with analyze; Advertiser 15 credits.\nAds: copy, landing URL, media, dates, spend, reach; TikTok adds targeting. A removed Ad is from our copy. Unknown ids: not_found, free.",
      "annotations": {
        "title": "Get an Ad or Advertiser",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "Ad 3 credits, +20 credits with analyze; Advertiser 15 credits",
      "paid": true
    },
    {
      "name": "track",
      "title": "Track a target",
      "description": "Use when a creator, hashtag, keyword, sound or Advertiser should be watched daily, with Change Reports.\nNot for filing into a Collection: add_to_collection (also starts a Tracker for a new target).\nPrice: Per cycle, first on create: creator 6, hashtag 3, keyword 3, sound 6, advertiser 30 credits; +20 credits per new video or Ad analysed; focus +3 credits per video judged, +1 credit per must_mention rejection.\nRe-tracking: free, same Tracker. kind=keyword takes the phrase; TikTok Advertiser (kind=advertiser, platform tiktok): EU/EEA, CH, UK and Turkey. refresh=true + tracker_id: a cycle now.",
      "annotations": {
        "title": "Track a target",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "Per cycle, first on create: creator 6, hashtag 3, keyword 3, sound 6, advertiser 30 credits; +20 credits per new video or Ad analysed; focus +3 credits per video judged, +1 credit per must_mention rejection",
      "paid": true
    },
    {
      "name": "list_trackers",
      "title": "List trackers",
      "description": "Use when you need the Customer's Trackers, with state, kind and next cycle time, e.g. to find a tracker_id.\nNot for one Tracker's detail or sample: use get_tracker. Not for what changed: use get_changes.\nPrice: Free.\nFilter by state or kind; next_cursor pages.",
      "annotations": {
        "title": "List trackers",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "get_tracker",
      "title": "Get a tracker",
      "description": "Use when you need one Tracker's kind, platform, target, state and analysis switch, and with a focus its latest in-focus sample.\nNot for what changed: get_changes. Not for starting one: track (an untracked target here is not_found).\nPrice: Free.\nFind it by tracker_id, or by platform + target as track takes them. With a focus, off-focus videos are hidden and counted in off_focus_count (a creator Tracker returns recent_videos); include_off_focus=true shows every verdict.",
      "annotations": {
        "title": "Get a tracker",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "set_tracker_state",
      "title": "Pause or resume a tracker",
      "description": "Use when pausing or resuming one Tracker; a paused Tracker runs no cycles and is charged nothing.\nNot for a whole Collection: act_on_collection. To stop for good: delete_tracker.\nPrice: Free.\nFind it as in get_tracker. Resuming restarts its daily cycles at the usual price.",
      "annotations": {
        "title": "Pause or resume a tracker",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "set_tracker_intelligence",
      "title": "Switch tracker analysis on or off",
      "description": "Use when switching analysis of new videos or Ads on or off for one Tracker, from its next cycle.\nNot for a whole Collection: act_on_collection. Not for which videos count: set_tracker_focus.\nPrice: Free.\nFind it as in get_tracker. The switch is free; on, it spends Credits: +20 credits per new video or Ad analysed, on top of the cycle price.",
      "annotations": {
        "title": "Switch tracker analysis on or off",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "set_tracker_focus",
      "title": "Set, clear or preview a tracker's focus",
      "description": "Use when telling one creator, hashtag, sound or keyword Tracker which videos are relevant (plain language, exclusions, optional must_mention), or previewing a focus.\nNot for pausing or analysis: set_tracker_state or set_tracker_intelligence; act_on_collection has no focus action.\nPrice: +3 credits per video judged, +1 credit per must_mention rejection; nothing for one already judged; clearing is free.\nSetting judges the latest sample now, so get_tracker hides off-focus videos. focus null clears it. preview=true returns verdicts without saving; saving after costs nothing more.",
      "annotations": {
        "title": "Set, clear or preview a tracker's focus",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "+3 credits per video judged, +1 credit per must_mention rejection; nothing for one already judged; clearing is free",
      "paid": true
    },
    {
      "name": "delete_tracker",
      "title": "Delete a tracker",
      "description": "Use when the Customer wants one Tracker gone for good: its cycles stop.\nNot for a break: set_tracker_state (paused). Not for leaving one Collection: remove_from_collection.\nPrice: Free.\nFind it as in get_tracker. Its Change Reports stay readable; tracking the target again starts a new Tracker.",
      "annotations": {
        "title": "Delete a tracker",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "get_changes",
      "title": "Get change reports",
      "description": "Use when you need what changed for a Tracker, or a Collection merged newest first: new videos, outliers, follower and view moves, velocity spikes, new top videos, new or stopped Ads, with before/after.\nNot for a Tracker's current state or sample: get_tracker. For fresh numbers now: track with refresh=true (charged).\nPrice: Free.\nPass tracker_id or collection (id or name), not both; since keeps later reports. New Ads carry analysis and analysis_status. With a focus, only in-focus videos are listed and off_focus_count counts the rest; include_off_focus=true lists them with verdicts.",
      "annotations": {
        "title": "Get change reports",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "get_tracker_ads",
      "title": "Get a tracker's stored Ads",
      "description": "Use when you need every Ad stored for a tracked Advertiser, stopped and removed Ads included.\nNot for an untracked Advertiser: search_ads. Not for what changed: get_changes.\nPrice: Free.\nAdvertiser Trackers only, paused too. Each Ad has a compact analysis or null; a filter on hook_type, angle, offer_type or format skips Ads with none. include=intelligence adds the full payload. next_cursor pages.",
      "annotations": {
        "title": "Get a tracker's stored Ads",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "get_tracker_snapshots",
      "title": "Get a tracker's history",
      "description": "Use when you need a Tracker's history over time: its target's Snapshots, or for an Advertiser the Ads running, started and stopped per day.\nNot for what changed: get_changes. Not for the Ads themselves: get_tracker_ads.\nPrice: Free.\nsince and until (UTC days) apply to Advertisers. Their series counts only observed Ads, reaches back before the Tracker, and has running null on a day it cannot be known. next_cursor pages.",
      "annotations": {
        "title": "Get a tracker's history",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "get_ad_snapshots",
      "title": "Get an Ad's history",
      "description": "Use when you need one stored Ad's history: each observation's running state, placements, countries, and disclosed spend and reach.\nNot for the Ad's details: get_ad. Not for an Advertiser's Ads: get_tracker_ads.\nPrice: Free.\nlibrary plus the id search_ads or get_tracker_ads returned. An Ad never observed is not_found. next_cursor pages.",
      "annotations": {
        "title": "Get an Ad's history",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "list_collections",
      "title": "List collections",
      "description": "Use when you need the Customer's Collections (named sets of Trackers such as 'Competitors'), each with its kind and member count.\nNot for its Trackers: list_trackers. Not for what changed in one: get_changes with collection.\nPrice: Free.\nEach holds one kind: creator, hashtag, keyword, sound or advertiser (older ones may hold video). Filter by kind; next_cursor pages.",
      "annotations": {
        "title": "List collections",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "create_collection",
      "title": "Create a collection",
      "description": "Use when the Customer wants an empty named Collection before adding Trackers.\nNot usually needed first: add_to_collection and track create a Collection from a name you have not used yet.\nPrice: Free.\nkind (creator, hashtag, keyword, sound or advertiser) is fixed once created. A Collection is only a set: pausing, analysis and cycles are per Tracker, charged once per cycle however many Collections hold it.",
      "annotations": {
        "title": "Create a collection",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "rename_collection",
      "title": "Rename a collection",
      "description": "Use when renaming a Collection, by id or current name; its Trackers are untouched.\nNot for changing its members: add_to_collection or remove_from_collection.\nPrice: Free.",
      "annotations": {
        "title": "Rename a collection",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "delete_collection",
      "title": "Delete a collection",
      "description": "Use when removing a Collection, by id or name.\nNot for taking one Tracker out: remove_from_collection. Not for pausing its Trackers: act_on_collection.\nPrice: Free.\nIts Trackers keep running unless delete_trackers=true, which also deletes members in no other Collection (their Change Reports stay readable with get_changes). The answer lists the Trackers still being charged.",
      "annotations": {
        "title": "Delete a collection",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "add_to_collection",
      "title": "Add to a collection",
      "description": "Use when putting a Tracker into a Collection (id or name): by tracker_id, or by platform + target, which starts a Tracker if not tracked yet.\nNot for a focus or a refresh: track (its collection argument files it too).\nPrice: Free for a Tracker you have; a new target runs its first cycle: creator 6, hashtag 3, keyword 3, sound 6, advertiser 30 credits; +20 credits per new video analysed.\nA new name creates the Collection with the Tracker's kind (pass kind with a target); another kind is collection_kind_mismatch. Collections mix Meta, Google and TikTok Advertisers.",
      "annotations": {
        "title": "Add to a collection",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "Free for a Tracker you have; a new target runs its first cycle: creator 6, hashtag 3, keyword 3, sound 6, advertiser 30 credits; +20 credits per new video analysed",
      "paid": true
    },
    {
      "name": "remove_from_collection",
      "title": "Remove from a collection",
      "description": "Use when taking a Tracker (tracker_id) out of a Collection (by id or name); the Tracker keeps running and stays in its other Collections.\nNot for stopping the Tracker: set_tracker_state or delete_tracker.\nPrice: Free.",
      "annotations": {
        "title": "Remove from a collection",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "act_on_collection",
      "title": "Act on every member",
      "description": "Use when pausing, resuming, refreshing or switching analysis for every Tracker in a Collection (by id or name) at once.\nNot for one Tracker: set_tracker_state, set_tracker_intelligence or track refresh=true. No focus action: set_tracker_focus.\nPrice: Free for pause, resume, intelligence; refresh is a cycle per member: creator 6, hashtag 3, keyword 3, sound 6, advertiser 30 credits; +20 credits per new video analysed.\nintelligence takes intelligence true or false (on: +20 credits per new video or Ad later). Shared Trackers change in all their Collections (trackers_in_other_collections).",
      "annotations": {
        "title": "Act on every member",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "price": "Free for pause, resume, intelligence; refresh is a cycle per member: creator 6, hashtag 3, keyword 3, sound 6, advertiser 30 credits; +20 credits per new video analysed",
      "paid": true
    },
    {
      "name": "get_run",
      "title": "Get a run",
      "description": "Use when a paid tool returned a run id still running: returns its status and, once completed or partial, the full result.\nNot for slicing a finished research: get_research. Not for past charges: get_usage.\nPrice: Free.\nNever re-runs the work. wait (seconds, max 120) blocks until it settles or the wait runs out, instead of polling; without it, poll after 2 s, doubling the gap up to 10 s; research takes minutes.",
      "annotations": {
        "title": "Get a run",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "get_usage",
      "title": "Get usage",
      "description": "Use when you need what has already been paid for, before repeating work: recent charges, one per Run, with kind, status, charge and list price in Credits, plus the total.\nNot for the Credits left: get_balance. Not for one Run's result: get_run.\nPrice: Free.",
      "annotations": {
        "title": "Get usage",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    },
    {
      "name": "get_balance",
      "title": "Get balance",
      "description": "Use when you need the Customer's prepaid Credits before spending: the balance plus each Grant (such as the Starter Grant) with its Credits left and expiry.\nNot for past charges: use get_usage. For one call's price, pass estimate=true to that tool.\nPrice: Free.\nGrants are spent first.",
      "annotations": {
        "title": "Get balance",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "price": "Free",
      "paid": false
    }
  ],
  "pricing": {
    "model": "prepaid-per-operation",
    "unit": "credits",
    "estimateSupported": true,
    "description": "Prepaid balance in Credits, charged per operation in whole Credits. A cached result costs the same as a fresh one. Top-ups buy 1,000 credits per US dollar, from $10. Before any work starts, the Balance is checked against the operation's quoted price (for Research and enriched searches, the worst-case quote). If it cannot cover that, the call is a `402 insufficient_balance` and no Run is created or charged. A multi-item Run (Research, enriched search) settles per item when it finishes. If the Balance no longer covers every completed item, the completed items are charged in order up to the Balance, the rest fail with `insufficient_balance`, and the Run ends `partial`. A Run that cannot afford any of its work ends `failed` and is not charged.",
    "detailsUrl": "https://www.shortsintel.com/llms.txt"
  }
}