API & MCP/MCP tool reference
MCP tool reference
All 32 tools, generated from the same route table the API dispatches on — with the quota each one draws down stated plainly.
Updated Sep 9, 2026·5 min read
This list is generated from api/routes.py — the same table that drives REST dispatch, so a tool here can never describe a different endpoint than the one it actually calls. A read-only credential sees only the 18 read tools; a read+write credential sees all 32.
Write tools (14) — require a read+write key
Every write tool asks for per-call confirmation in Claude — it carries `destructiveHint: true` because it spends a quota that does not refund.
- Analyze TikTok or YouTube Short —
analyze_tiktok_video. Analyze a TikTok video or photo slideshow (/video/ or /photo/ links) or a YouTube Short (youtube.com/shorts/, youtube.com/watch?v= or youtu.be/ links) by URL. Consumes one catalog slot.
Quota: Catalog slot — standing cap, does not reset; a slot frees at the end of the UTC day a video is dropped. Reaches TikTok directly (may take longer than a lookup). - Create niche agent —
create_niche. Create a Viral Content Agent that watches a niche by keyword.
Quota: Custom niche (Viral Content Agent) slot — standing cap. Reaches TikTok directly (may take longer than a lookup). - Update niche agent —
update_niche. Rename a Viral Content Agent, change its 1-3 keywords, and/or set auto_analyse_mode: 'off', 'winners' (each refresh's top 10 by multiplier) or 'all' (every new video), or 'default' for the plan default (off on Creator, all on other plans). Changed keywords re-seed the niche. Auto-analysis uses one catalog slot per video, highest multiplier first, and stops when the catalog is full.
Quota: Free — does not draw down any plan quota. - Stop niche agent —
stop_niche. Stop a Viral Content Agent. Its slot frees at the next UTC midnight and resume_niche reverses it.
Quota: Free — does not draw down any plan quota. - Resume niche agent —
resume_niche. Resume a stopped Viral Content Agent. Needs a free niche slot.
Quota: Free — does not draw down any plan quota. - Track creator —
track_creator. Track a TikTok creator by username or profile URL. Adds the creator to the workspace and scrapes their latest videos in the background; returns a job handle (202). A creator already tracked returns already_tracked, a stopped one is reported as creator_stopped.
Quota: Free — does not draw down any plan quota. Reaches TikTok directly (may take longer than a lookup). - Stop tracking creator —
stop_tracking_creator. Stop tracking a creator. Their videos are dropped from the catalog (analyses are kept, frozen); resume_tracking_creator reverses it.
Quota: Free — does not draw down any plan quota. - Resume tracking creator —
resume_tracking_creator. Track a stopped creator again. Videos dropped since the last UTC midnight come back with it.
Quota: Free — does not draw down any plan quota. - Drop video from catalog —
drop_video. Drop a video from the catalog. The analysis is kept, frozen, and the catalog slot frees at the next UTC midnight.
Quota: Free — does not draw down any plan quota. - Restore dropped video —
undrop_video. Restore a dropped video to the catalog. Needs a free catalog slot.
Quota: Catalog slot — standing cap, does not reset; a slot frees at the end of the UTC day a video is dropped. - Search viral trends —
search_viral_trends. Search for breakout videos by hashtag. A cached hashtag returns full results right away. An uncached one returns a job handle (202) with no results yet; that handle is resolved by get_trend_search_result, which reports status complete or error and carries the results.
Quota: Trend search — monthly allowance, resets on your billing day. Reaches TikTok directly (may take longer than a lookup). - Generate script —
generate_script. Generate a script grounded in the workspace top performers. Returns a job handle (202) rather than the script itself, because generation takes up to a minute. The handle is resolved by get_script_result, which reports status completed or failed and carries the script.
Quota: Script — monthly allowance, resets on your billing day. - Save video to library —
save_video. Save a video to the workspace library. Works for TikToks and YouTube Shorts; pass platform ('tiktok' or 'youtube') from get_niche_videos, or omit it and a YouTube-shaped id is saved as a Short.
Quota: Free — does not draw down any plan quota. - Remove video from library —
remove_from_library. Remove a video from the library.
Quota: Free — does not draw down any plan quota.
Read tools (18) — work with a read-only key
- Get analysis result —
get_analysis_result. Resolves the job handle returned by analyze_tiktok_video into the finished analysis. Status is processing, completed or failed, and the response carries a retry_after_seconds hint for how long to wait between attempts while it is still processing. A failed job also carries a machine-readable error_code (for example rate_limited or limit_reached; null when none was recorded) next to the error text.
Quota: Free — does not draw down any plan quota. - Get script result —
get_script_result. Resolves the job handle returned by generate_script into the finished script. Status is processing, completed or failed, and the response carries a retry_after_seconds hint for how long to wait between attempts while it is still processing.
Quota: Free — does not draw down any plan quota. - Get trend search result —
get_trend_search_result. Resolves the job handle returned by search_viral_trends into the finished results. Status is pending, complete or error, and the response carries a retry_after_seconds hint for how long to wait between attempts. A search already in flight is resolved here; starting another for the same hashtag spends a second viral search from the monthly allowance.
Quota: Free — does not draw down any plan quota. - Search videos —
search_videos. Search analyzed videos and slideshows in this workspace by username, view count, date range, or format ('video' or 'slideshow'). Each row carries platform ('tiktok' or 'youtube') and post_format ('photo' carousel, 'slideshow' template, 'video', or null for a video).
Quota: Free — does not draw down any plan quota. - Get video analysis —
get_video_analysis. Full AI analysis for one video or slideshow. A video returns hook, timing, scenes and transcript; a slideshow (schema_version carousel_v1) returns cover, slide-by-slide breakdown, narrative, aesthetic, audio, swipe and save drivers, and scores.
Quota: Free — does not draw down any plan quota. - Find similar videos —
find_similar_videos. Find videos or slideshows similar to a given one using vector search. Each row carries post_format.
Quota: Free — does not draw down any plan quota. - List breakouts —
list_breakouts. List videos currently breaking out among tracked creators. Pass username to see one creator's breakouts.
Quota: Free — does not draw down any plan quota. - Browse niche catalogue —
browse_niche_catalog. Browse available niches and their metadata, including catalog_video_count (an approximate count of the videos the niche's catalogue holds, a cached counter updated by the nightly refresh). The workspace's own custom niches come first, then the global catalogue. Each niche has a status: 'active', or 'stopped' (no longer refreshing, but its videos are still there to read). auto_analyse_effective says how its videos get analysed automatically: a global niche ('winners', auto_analyse_shared true) has each refresh's top 10 analysed by fypnow for everyone, free; a custom niche runs 'off', 'winners' or 'all' into this workspace, one catalog slot per video (auto_analyse_mode is the stored choice, null = plan default), and auto_analyse_paused_reason 'catalog_full' means it stopped because the catalog is full (upgrade or free slots). Paginated: when meta.has_more is true, request the next page. Returns niches only, not videos, and carries no per-video AI analysis; that lives behind analyze_tiktok_video. Per-niche numbers (typical views, breakouts, top creators, hashtags) come from get_niche_stats.
Quota: Free — does not draw down any plan quota. - Get niche videos —
get_niche_videos. Top videos in one niche, ranked by multiplier: the video's views divided by its creator's follower count (subscribers for YouTube). As an MCP tool it takes the niche's name (e.g. 'forex'; matched case-insensitively on name, then slug, then singular/plural ('protein noodle' finds 'Protein Noodles'), then the niche's keywords, preferring your own niche over a global one) or a niche id from browse_niche_catalog: pass the name directly rather than browsing first. Your stopped niches still answer; meta.niche gives the niche's status ('active' or 'stopped') and last_refreshed_at, so say when a stopped niche last refreshed. Over REST the id is in the path. Returns catalogue stats — views, likes, author, multiplier, platform — not per-video AI analysis. Niches mix TikToks and YouTube Shorts; platform is 'tiktok' or 'youtube'. A hook and scene teardown of a TikTok or a Short comes from analyze_tiktok_video, which takes its video_url. Rows carry no hook data; the top hooks in a niche come from get_niche_hooks. Each row carries post_format; the format input ('video' or 'slideshow') narrows the list to one.
Quota: Free — does not draw down any plan quota. - Get niche hooks —
get_niche_hooks. The top hooks in one niche: hook types from the niche's most viral videos (its top 100 catalogue rows by multiplier) that this workspace has analysed. Takes the niche's name (matched like get_niche_videos) or a niche id. Hooks come from videos this workspace has analysed with analyze_tiktok_video and, for a global niche, from the top videos fypnow analyses for everyone after each refresh (examples carry shared: true); catalogue rows carry no hook data, and other workspaces' analyses are never used. Returns hooks (per hook_type: videos, avg_multiplier and up to 3 examples with hook_text, best first, ordered by how many top videos use the hook), analysed_count, catalog_considered, and next_to_analyse: the next most viral unanalysed videos (slideshows left out, since their analysis has no hook), each with a ready video_url for analyze_tiktok_video. limit sizes next_to_analyse (default 10, max 25). When few or none are analysed, the answer is to offer analysing next_to_analyse; each analysis costs one catalog slot, and nothing is analysed without the user agreeing. meta.niche gives the niche and its status.
Quota: Free — does not draw down any plan quota. - Get niche stats —
get_niche_stats. Stats for one niche from its nightly snapshot: typical post views, breakout posts (3x or more the creator's followers), active creators and views on this week's top posts, each next to the snapshot from a week earlier; top and rising creators, sounds in use, top hashtags, posting times, the top 3 posts this week, posts and breakouts per posting day, and the daily snapshot series. Takes a niche id from browse_niche_catalog. The numbers describe the top posts the nightly crawl keeps per niche (about 50 a night, about 100 for custom niches), not all of TikTok. latest is null until the first nightly snapshot, and week-over-week comparisons need a week of snapshots.
Quota: Free — does not draw down any plan quota. - List creators —
list_creators. List tracked creators in this workspace, with their ids.
Quota: Free — does not draw down any plan quota. - Get creator report —
get_creator_report. Profile, follower history and winning patterns for one creator.
Quota: Free — does not draw down any plan quota. - List scripts —
list_scripts. List generated scripts in this workspace.
Quota: Free — does not draw down any plan quota. - Get script —
get_script. Fetch one generated script by id.
Quota: Free — does not draw down any plan quota. - List library —
list_library. List videos saved to the workspace library.
Quota: Free — does not draw down any plan quota. - Get growth scorecard —
get_growth_scorecard. Grade the workspace own account against its niche benchmarks.
Quota: Free — does not draw down any plan quota. - Get account usage —
get_account_usage. Current plan allowances and consumption. Free and unmetered.
Quota: Free — does not draw down any plan quota.
Every tool returns a machine-readable code on failure (e.g. write_scope_required, catalog_full) rather than a bare string — see REST reference for the full error-code table, which applies identically over MCP.
Was this page helpful?