Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Viral Outliers

REMOTE · VIRALOUTLIERS.COM · SCANNED AUG 16

Find viral outlier posts on TikTok, Instagram and YouTube, pull creator stats, and crawl on demand.

72 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security80
Transport & Reachability100
Schema Quality & AI Usability73
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2711 tokens (~129/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
  • Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage86
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 59% of tool parameters carry a description.Partial
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · viraloutliers.com

# add to Claude Code
claude mcp add --transport http com-viraloutliers-viral-outliers https://viraloutliers.com/api/mcp
# ~/.codex/config.toml
[mcp_servers.com-viraloutliers-viral-outliers]
url = "https://viraloutliers.com/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-viraloutliers-viral-outliers": {
      "type": "remote",
      "url": "https://viraloutliers.com/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-viraloutliers-viral-outliers --url https://viraloutliers.com/api/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-viraloutliers-viral-outliers:
    url: "https://viraloutliers.com/api/mcp"
// mcp.json
{
  "mcpServers": {
    "com-viraloutliers-viral-outliers": {
      "type": "http",
      "url": "https://viraloutliers.com/api/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 16 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Aug 26 +1
    • Stability: unverified → 0.03 functional
  • 13 Aug 26 70

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 16 Aug 2026 · Probed https://viraloutliers.com/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=viraloutliers.com CN=WE1,O=Google Trust Services,C=US 14 Aug 2026 12 Nov 2026 ECDSA 256 ECDSA-SHA256 ccd40bc0fb7e7b270ec54a8f133d79db
SANs: viraloutliers.com, *.viraloutliers.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC insecure

Validation of viraloutliers.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
viraloutliers.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000; includeSubDomains; preload
x-content-type-options nosniff
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://viraloutliers.com/api/mcp Verified 200
http (plaintext) http://viraloutliers.com/api/mcp HTTPS enforced 301 https://viraloutliers.com/api/mcp
MCP tools · 21 exposed · ~2,711 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
compare_profiles ~123

Compares 2–5 tracked profiles (by profile id or platform+handle) and returns each one's stats (follower count, average views/likes across time windows, engagement rate) plus a computed ranking flagging the top performer by followers and by engagement. Pure lookup, fast. Unresolved profiles come back in a notFound list rather than failing the call. Cost: 2 credits per call.

NameTypeReqDescription
handlesarrayHandle pairs to resolve; 2–5 profiles total across both fields
profileIdsarrayProfile ids to compare

No output schema declared.

No examples provided.

crawl_profile ~96

Submits a public profile for crawling: profile metadata plus its recent posts, stats and thumbnails, after which it stays tracked and appears in searches. Asynchronous. Returns a job reference for get_job_status. If the profile is already tracked, this returns immediately without charging a full crawl. Credits are refunded automatically when a crawl fails. Cost: 40 credits per call.

NameTypeReqDescription
handlestringyes
platformstringyes

No output schema declared.

No examples provided.

create_topup_link ~101

Creates a Stripe Checkout link for a credit pack, so when the balance runs out mid-task you can hand the account owner a one-click payment link instead of instructions. Credits land within seconds of payment. Free to call (5 links/hour); links are valid for 24 hours. Packs: see the pricing table in the docs. Cost: free.

NameTypeReqDescription
packIdstringyesCredit pack to buy — see get_credit_balance / docs for sizes

No output schema declared.

No examples provided.

download_post_media ~142

Returns direct media URLs for a tracked post, the video file, or slideshow images with positions. Accepts a public post URL or an internal post id. When media is not stored yet it queues an on-demand fetch and returns a jobRef to poll (typically ready within ~90 seconds); call again once complete. Platform CDN URLs can expire, so download promptly. YouTube currently returns the thumbnail image. You are responsible for using downloaded media in line with the platforms' terms and applicable law. Cost: 3 credits per call.

NameTypeReqDescription
postIdstringInternal post id
urlstringPublic post URL (alternative to postId)

No output schema declared.

No examples provided.

get_credit_balance ~57

Returns the current API credit balance for the authenticated account. Free to call. Agents should check the balance before starting large batch jobs and surface "insufficient_credits" errors to the user with a link to top up. Cost: free.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_job_status ~71

Returns the status of an asynchronous job started by crawl_profile or request_transcript: pending, processing, completed or failed. Free to call: polling must never cost credits. Poll every 10–30 seconds; jobs typically complete within a few minutes. Cost: free.

NameTypeReqDescription
jobRefstringyes

No output schema declared.

No examples provided.

get_post ~126

Fetch a single post by id: views, likes, comments, engagement rate, outlier scores for seven time windows, thumbnail and the owning profile. When a transcript or visual analysis already exists it is included at no extra cost. Request new ones via request_transcript. Use after search_outliers to deep-dive a result. Cost: 1 credit per call.

NameTypeReqDescription
includeTranscriptbooleanAttach cached transcript (default true)
includeVisualAnalysisbooleanAttach cached visual analysis (default true)
postIdstringyesInternal post id from search results

No output schema declared.

No examples provided.

get_profile ~105

Fetch one tracked profile by id: follower count, bio, average views/likes/engagement across time windows, and recent tracked posts. The averages are the baseline outlier scores are computed against. Use search_profiles first to resolve a handle to an id. Cost: 1 credit per call.

NameTypeReqDescription
handlestring
platformstringWith handle: look up by handle instead of id
profileIdstringProfile id from search results

No output schema declared.

No examples provided.

get_remix_result ~82

Returns the finished remix for a remix_post job: adapted title, description, script segments and checklist. Free to call. Poll get_job_status until the job reports completed, then fetch here. The result is also viewable in the web app under Content Ideas. Cost: free.

NameTypeReqDescription
jobRefstringyesThe pipeline jobRef returned by remix_post

No output schema declared.

No examples provided.

get_tracked_updates ~140

Returns the posts newly discovered (first stored by our crawler) since your last check, across all the profiles you are monitoring. Free to call. Each call advances a per-profile cursor, so a subsequent call only returns posts crawled after it (a feed, not a re-scan). New posts arrive when a profile's scheduled refresh crawl runs, on the cadence set by track_profile. Results are the same flattened post shape as search_outliers (stats, thumbnail, handle). Total posts are capped (limit 1–100, default 50). Cost: free.

NameTypeReqDescription
limitintegerMax posts to return (default 50)

No output schema declared.

No examples provided.

get_trending_outliers ~78

Returns the current top trending outlier posts across TikTok, Instagram and YouTube, deduplicated to one per creator. Free and unauthenticated (rate-limited per IP; cached ~2 hours). A taste of the database. For filtered search, transcripts and on-demand crawling, create an API key. Cost: free.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_tracked_profiles ~89

Returns every profile you are currently monitoring, with its handle, platform, follower count, refresh cadence, next scheduled crawl time, when it was last checked for updates, and any paused reason (e.g. paused for insufficient credits). Free to call. Use it to audit what is being refreshed and what it is costing, or to grab a profileId for untrack_profile. Cost: free.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

niche_trends ~119

Returns the top overperforming posts in a niche over a recent window (default one week), plus a breakdown of which content types are driving the trend and which creators are represented. Filter by keyword and platform. Great as the first call in a content-research loop: see what's hot, then deep-dive or remix the winners. Cost: 2 credits per call.

NameTypeReqDescription
limitinteger
platformsarray
querystringNiche keyword
timeFramestringDefault one_week

No output schema declared.

No examples provided.

remix_post ~215

Takes a post (pass a public post URL or an internal post id) plus a target niche/brand description, and produces an adapted content idea: rewritten title and description, segment-by-segment script, and an execution checklist, the proven format transplanted into your niche. Asynchronous (~1–3 minutes): returns a jobRef; poll get_remix_result until its "remix" field is populated (it returns status + result together). For video posts the remix now auto-generates the transcript and visual analysis first, so quality no longer depends on you transcribing beforehand (it just takes a little longer). Credits are refunded automatically if the remix fails. Cost: 20 credits per call.

NameTypeReqDescription
postIdstringInternal post id
targetNichestringyesYour niche/brand/audience, 5–500 chars
tonestringPreferred tone of voice
urlstringPublic post URL (alternative to postId — what a user browsing social media has)

No output schema declared.

No examples provided.

report_issue ~148

Report a problem with any skill: an error you keep hitting, data that looks wrong or stale, or something you needed that the API could not do. Free: never spend credits on telling us something is broken. Include what you called, what you expected and what happened. Set wantsUpdate to true to get an email on your account address when the issue is resolved. Reports go straight to the team. Cost: free.

NameTypeReqDescription
messagestringyesWhat you called, what you expected, what happened (10–2000 chars)
skillstringWhich skill the issue is about, when known
wantsUpdatebooleantrue = email the account owner when resolved

No output schema declared.

No examples provided.

request_transcript ~114

Queues AI transcription for a post (spoken audio; slideshows use on-screen text extraction). Accepts a public post URL or an internal post id. Asynchronous: returns a job reference to poll with get_job_status; once complete the transcript is attached to get_post responses. Credits are charged on queueing and automatically refunded if the job fails. Cost: 10 credits per call.

NameTypeReqDescription
postIdstringInternal post id
urlstringPublic post URL (alternative to postId)

No output schema declared.

No examples provided.

resolve_post_url ~140

Takes a public post URL (TikTok video/photo, Instagram post/reel, YouTube video/short) and resolves it to the tracked post: the entry point when your input is a link. found:true returns the postId for get_post, request_transcript, download_post_media and remix_post. found:false tells you whether the whole profile is untracked (call crawl_profile) or just this post. TikTok/Instagram short links (vm.tiktok.com, /share/) must be expanded to the canonical URL first. Cost: 1 credit per call.

NameTypeReqDescription
urlstringyesPublic post URL (canonical, not a short link)

No output schema declared.

No examples provided.

search_outliers ~294

Search a continuously-crawled database of social media posts ranked by outlier score: how strongly a post overperforms the account's own baseline. Filter by platform, keyword, content type, views, follower count, engagement rate and time window; sort by outlier score, views or recency. Returns post metadata, stats and thumbnails. Use this to find proven viral formats in any niche before creating content. Results may include deleted posts (deleted_at set) and posts from deactivated profiles (profile is_active=false), these are kept for their thumbnails and format ideas, with stats frozen at deletion; filter on deleted_at / is_active if you only want live content. Cost: 1 credit per call.

NameTypeReqDescription
contentTypesarray
handlestringExact creator handle filter
maxEngagementRatenumber
maxFollowersnumber
maxOutlierScorenumber
maxViewsnumber
minEngagementRatenumber
minFollowersnumber
minOutlierScorenumber
minViewsnumber
pageinteger
pageSizeinteger
platformsarray
querystringKeyword search over captions/titles
sortBystring
timeFramestring

No output schema declared.

No examples provided.

search_profiles ~160

Search tracked social media profiles by handle or name, filtered by platform. Returns profile metadata, follower counts and average performance stats. Use it to resolve a handle to a profile id before fetching stats or posts, or to discover creators in the database. Results may include deactivated profiles (is_active=false), e.g. an account that was renamed or went private, retained with frozen stats; filter on is_active if you only want live accounts. Note a creator who changed handles can appear as two rows (old deactivated + new active). Cost: 1 credit per call.

NameTypeReqDescription
pageinteger
pageSizeinteger
platformsarray
querystringHandle, @handle, or profile URL

No output schema declared.

No examples provided.

track_profile ~215

Starts monitoring a profile so it is automatically re-crawled at a cadence you choose (daily, every_3_days or weekly), keeping its posts and stats fresh without you polling crawl_profile. Identify the profile by profileId, platform+handle, or a public profile/post URL. Managing monitoring is free; each scheduled refresh crawl costs credits (10 per refresh) and monitoring pauses itself if your balance runs out, then resumes when you top up. The profile must already be in the database; crawl_profile it first if it is not. Calling again on an already-monitored profile just updates the cadence. Pull the new posts with get_tracked_updates. Cost: free.

NameTypeReqDescription
frequencystringRefresh cadence (default weekly)
handlestringPublic handle, without @ (pair with platform)
platformstringWith handle: resolve the profile to monitor
profileIdstringInternal profile id from search results
urlstringPublic profile or post URL identifying the profile

No output schema declared.

No examples provided.

untrack_profile ~96

Stops monitoring a profile: no further scheduled refresh crawls are charged for it. Free to call. Pass the internal profileId (from list_tracked_profiles or search results). The profile and its already-crawled posts stay in the database and searchable; only the recurring refresh stops. Returns not_found if the profile is not currently being monitored. Cost: free.

NameTypeReqDescription
profileIdstringyesInternal profile id to stop monitoring

No output schema declared.

No examples provided.