Viral Outliers
REMOTE · VIRALOUTLIERS.COM · SCANNED AUG 16
Find viral outlier posts on TikTok, Instagram and YouTube, pull creator stats, and crawl on demand.
Available components
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http com-viraloutliers-viral-outliers https://viraloutliers.com/api/mcp
[mcp_servers.com-viraloutliers-viral-outliers] url = "https://viraloutliers.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-viraloutliers-viral-outliers": {
"type": "remote",
"url": "https://viraloutliers.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-viraloutliers-viral-outliers --url https://viraloutliers.com/api/mcp --transport streamable-http
mcp_servers:
com-viraloutliers-viral-outliers:
url: "https://viraloutliers.com/api/mcp" {
"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.
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.
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 |
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.
compare_profiles Compare Profiles Head-to-Head ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| handles | array | – | Handle pairs to resolve; 2–5 profiles total across both fields |
| profileIds | array | – | Profile ids to compare |
No output schema declared.
No examples provided.
crawl_profile Crawl a New 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.
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | yes | – |
| platform | string | yes | – |
No output schema declared.
No examples provided.
create_topup_link Create a Credit Top-Up 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.
| Name | Type | Req | Description |
|---|---|---|---|
| packId | string | yes | Credit pack to buy — see get_credit_balance / docs for sizes |
No output schema declared.
No examples provided.
download_post_media 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.
| Name | Type | Req | Description |
|---|---|---|---|
| postId | string | – | Internal post id |
| url | string | – | Public post URL (alternative to postId) |
No output schema declared.
No examples provided.
get_credit_balance Check 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 Check 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.
| Name | Type | Req | Description |
|---|---|---|---|
| jobRef | string | yes | – |
No output schema declared.
No examples provided.
get_post Get Post Details ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| includeTranscript | boolean | – | Attach cached transcript (default true) |
| includeVisualAnalysis | boolean | – | Attach cached visual analysis (default true) |
| postId | string | yes | Internal post id from search results |
No output schema declared.
No examples provided.
get_profile Get Profile Stats ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | – | – |
| platform | string | – | With handle: look up by handle instead of id |
| profileId | string | – | Profile id from search results |
No output schema declared.
No examples provided.
get_remix_result Fetch a Finished Remix ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| jobRef | string | yes | The pipeline jobRef returned by remix_post |
No output schema declared.
No examples provided.
get_tracked_updates Get New Posts From Monitored Profiles ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max posts to return (default 50) |
No output schema declared.
No examples provided.
get_trending_outliers Trending Viral Outliers (Free) ~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 List Monitored 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 What's Trending in a Niche ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| platforms | array | – | – |
| query | string | – | Niche keyword |
| timeFrame | string | – | Default one_week |
No output schema declared.
No examples provided.
remix_post Remix a Post to Your Niche ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| postId | string | – | Internal post id |
| targetNiche | string | yes | Your niche/brand/audience, 5–500 chars |
| tone | string | – | Preferred tone of voice |
| url | string | – | Public post URL (alternative to postId — what a user browsing social media has) |
No output schema declared.
No examples provided.
report_issue Report an 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.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | What you called, what you expected, what happened (10–2000 chars) |
| skill | string | – | Which skill the issue is about, when known |
| wantsUpdate | boolean | – | true = email the account owner when resolved |
No output schema declared.
No examples provided.
request_transcript Transcribe a Post ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| postId | string | – | Internal post id |
| url | string | – | Public post URL (alternative to postId) |
No output schema declared.
No examples provided.
resolve_post_url Resolve a 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Public post URL (canonical, not a short link) |
No output schema declared.
No examples provided.
search_outliers Search Viral Outlier Posts ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| contentTypes | array | – | – |
| handle | string | – | Exact creator handle filter |
| maxEngagementRate | number | – | – |
| maxFollowers | number | – | – |
| maxOutlierScore | number | – | – |
| maxViews | number | – | – |
| minEngagementRate | number | – | – |
| minFollowers | number | – | – |
| minOutlierScore | number | – | – |
| minViews | number | – | – |
| page | integer | – | – |
| pageSize | integer | – | – |
| platforms | array | – | – |
| query | string | – | Keyword search over captions/titles |
| sortBy | string | – | – |
| timeFrame | string | – | – |
No output schema declared.
No examples provided.
search_profiles Search Social Media 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.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | – |
| pageSize | integer | – | – |
| platforms | array | – | – |
| query | string | – | Handle, @handle, or profile URL |
No output schema declared.
No examples provided.
track_profile Monitor a 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.
| Name | Type | Req | Description |
|---|---|---|---|
| frequency | string | – | Refresh cadence (default weekly) |
| handle | string | – | Public handle, without @ (pair with platform) |
| platform | string | – | With handle: resolve the profile to monitor |
| profileId | string | – | Internal profile id from search results |
| url | string | – | Public profile or post URL identifying the profile |
No output schema declared.
No examples provided.
untrack_profile Stop Monitoring a 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.
| Name | Type | Req | Description |
|---|---|---|---|
| profileId | string | yes | Internal profile id to stop monitoring |
No output schema declared.
No examples provided.