MCP Server
Connect AI assistants to the Virlo API with our native Model Context Protocol (MCP) server. Supports Cursor, Claude Cowork, claude.ai, VS Code, Claude Code, Claude Desktop, and Windsurf with one-click or copy-paste setup.
The server exposes 49 tools that cover every capability of the public API — Content Research Agents (one-shot + recurring), Satellite creator/video/sound intel, long-term Tracking, Audience demographics, Sounds, Trends, and account utilities.
Claude Desktop, claude.ai, and Claude Code connect via OAuth — sign in to
Virlo when prompted and a dedicated API key is minted for you automatically.
Cursor, VS Code, and Windsurf need an existing API key — grab one at
dev.virlo.ai/dashboard (keys start with virlo_tkn_).
Quick Setup
Enter your API key below to get personalized, ready-to-use configuration for your AI client. Cursor users get a one-click install button.
Paste your virlo_tkn_ key to get ready-to-use configs with one-click install for Cursor. Claude Desktop, claude.ai, and Claude Code users can skip this — they connect via OAuth and a key is created automatically.
Enter your API key above to enable one-click Cursor install.
Or add to .cursor/mcp.json:
{
"mcpServers": {
"virlo": {
"url": "https://dev.virlo.ai/api/mcp/mcp",
"headers": {
"Authorization": "Bearer virlo_tkn_YOUR_KEY"
}
}
}
}How research tools map to Agents
Under the hood, keyword search and niche monitoring are the same product: Content Research Agents (/v1/agents). MCP keeps the legacy tool names (search_keywords, create_niche_monitor, …) as a stable public contract so existing Cursor / Claude / OpenClaw setups keep working — every call creates or reads a CRA.
| Intent | MCP tools (stable names) | REST equivalent |
|---|---|---|
| Draft keywords before spending | suggest_keywords (free) | POST /v1/agents/suggest-keywords |
| One-shot research — “what works in X?” | search_keywords, list_keyword_searches, get_keyword_search_results | POST/GET /v1/agents with is_recurring: false |
| Recurring monitor — “keep watching X” | create_niche_monitor, list_niche_monitors, get_niche_monitor_data, … | POST/GET /v1/agents with is_recurring: true + cadence |
| Self-optimizing autonomy | get_niche_monitor_proposals, get_niche_monitor_activity, review_niche_monitor_proposal, set_niche_monitor_autonomy | /v1/agents/:id/proposals, /activity, autonomy |
You no longer pick a min_views floor or time_range at creation — collection is system-managed. Filter at read time (min_views, start_date, end_date, platforms, order_by, region) for free. intent is required on search_keywords / create_niche_monitor — do not invent it from a keyword list. Call suggest_keywords first (free), then create with the same intent. Good vs bad examples: Intent Cookbook.
For full REST schemas, migration notes from Orbit/Comet, and autonomy details, see Content Research Agents. For how an assistant should use these tools (virality scoring, intelligence fields, spend discipline), load the Agent Playbook or the MCP resource virlo://docs/agent-playbook.
Available Tools
Tools are named for what they do. Creation costs credits; reads are free.
Analytics (instant)
| Tool | Credits | What it does |
|---|---|---|
search_hashtags | 5 | Search trending hashtags across platforms or filter by YouTube/TikTok/Instagram |
get_hashtag_performance | 5 | Detailed performance metrics (views, likes, comments) for a specific hashtag |
get_trending_videos | 25 | Top viral videos from the last ~48 hours |
get_trends | 25 | Trend groups with optional date range / region |
get_trends_digest | 25 | Today's curated trend digest (editorially ordered; region-aware) |
get_emerging_trends | 25 | Momentum-ranked early-stage trends (new / rising) — “what's about to take off” |
Prefer get_emerging_trends when the user asks what is breaking, rising, or emerging; use get_trends / get_trends_digest for broader or editorial digests.
Content Research Agents — one-shot (async)
Legacy MCP names: Orbit / keyword search. Creates is_recurring: false agents.
| Tool | Credits | What it does |
|---|---|---|
suggest_keywords | Free | Turn an intent into a quality-graded keyword set before you spend. Sync; nothing created. Retry if quality.passes is false. |
search_keywords | 50 (+100 DI) | Queue a one-shot research run. intent required. Auto-polls briefly (~25s); typical runs take 15–20 minutes (up to ~45). Expect a job_id and check later. |
list_keyword_searches | Free | List previous one-shot agents |
get_keyword_search_results | Free | Read slices by data_type: status (default), summary, videos, slideshows, ads, outliers, analysis, trends, sounds |
Intent + keywords. Call suggest_keywords first when you don't have a solid keyword list. Pass the same intent into search_keywords. Send 6–10 specific multi-word phrases covering synonyms of the same concept. Never invent intent from keywords. See the Intent Cookbook. english_only defaults to true; set false for all languages (write keywords in the target language). data_intelligence_enabled adds +$1.00 for 43 AI fields per video/slideshow. At retrieval, filter with min_views / start_date / end_date / platforms / region (ISO-3166-1 alpha-2, beta). Treat the run as fully ready only when finalized: true. Status partial_failure is usable data. Once a run finalizes, data_type: "summary" is the best first read — a compact digest (run rollup, counts, top creators/trends, an analysis headline, plus live progress_pct / stage / eta_seconds) that also returns a next_actions[] list of suggested follow-up reads.
Content Research Agents — recurring (async)
Legacy MCP names: Comet / niche monitor. Creates is_recurring: true agents with a cadence.
| Tool | Credits | What it does |
|---|---|---|
create_niche_monitor | 50/run (+100 DI) | Create a scheduled agent (daily / weekly / monthly). intent required. First run starts immediately. |
list_niche_monitors | Free | List recurring agents |
get_niche_monitor_data | Free | Read by data_type: overview (default), summary, videos, slideshows, ads, outliers, analysis, trends, sounds, hashtags, benchmarks, affinity (beta), similar (beta) |
update_niche_monitor | Free | Update name, keywords, cadence, platforms, intent, data intelligence, english_only, or reactivate |
delete_niche_monitor | Free | Soft-delete (reactivate via update_niche_monitor with is_active: true) |
get_niche_monitor_proposals | Free | List self-optimization proposals (keyword refreshes, collection widenings) |
get_niche_monitor_activity | Free | Decision / reflection log over time |
review_niche_monitor_proposal | Free | apply / dismiss / revert a proposal (first manual apply unlocks autopilot for the team) |
set_niche_monitor_autonomy | Free | suggest vs autopilot, or pause with cognition_enabled: false |
Recurring extras. Same language/region rules as one-shot. get_niche_monitor_data also serves niche-discovery slices (sounds, hashtags, benchmarks, affinity, similar) that one-shot reads don't. For outliers prefer order_by=weighted_score (or rising for velocity). Trends carry lifecycle status (new | rising | steady | fading) and a stable key across cycles.
Satellite — Creator, Video & Sound Intelligence (async)
| Tool | Credits | What it does |
|---|---|---|
lookup_creator | 50 (+50 trends, +25 data intelligence, +50 audience) | Full creator profile + analytics. Optional trend_analysis (forces deep fetch). Optional data_intelligence (+25; per-video hook/format/visual + a grounded analysis, read on the run). Optional audience enrichment (+50 per creator; free on a fresh cached snapshot). |
batch_lookup_creators | 50 per creator | Look up up to 25 creators; returns per-creator job IDs |
analyze_video | 50 | Video outlier analysis against the creator's typical metrics |
lookup_sound | 50 (+50 for trends) | TikTok + Instagram sound deep-dive (YouTube not supported); optional AI trends |
lookup_hashtag | 50 (+50 trends, +50 depth=deep, +150 depth=full) | TikTok / Instagram / YouTube hashtag deep-dive; optional AI trends; deep surcharge waived when trend_analysis: true; Instagram is standard depth only; free repeat within 6h. Max 250 ($2.50). |
get_satellite_run | Free | Re-read any paid satellite run by run_id — durable, never re-charged |
list_satellite_runs | Free | List past runs (filter by type, platform, date) |
Every paid Satellite run persists a run_id. Prefer listing / re-reading before spending again.
Tracking — Long-term Monitoring
| Tool | Credits | What it does |
|---|---|---|
track_creator | 25/cycle | Start recurring metrics collection + AI reports (optional collection_depth for an initial deep post back-fill, +50/100/200) |
track_video | 25/cycle | Start recurring video tracking + AI reports |
list_tracked_items | Free | List tracked creators and/or videos |
get_tracking_report | Free | Latest AI report, metric snapshots, or full details |
list_creator_posts | Free | Posts with per-post metrics, TikTok duet/stitch flags, and sound (native external_id) |
collect_creator_posts | Varies | On-demand collect: standard ($0.50 / 50), deep ($1.00 / 200), full ($2.00 / 500) |
get_posting_cadence | Free | Avg gap, posts per week/month, day-of-week distribution |
update_tracking_settings | Free | Pause / resume cycles, or change scrape_cadence (keeps history) |
untrack_creator | Free | Deactivate creator tracking (history kept; re-track restores) |
untrack_video | Free | Deactivate video tracking |
Pause with update_tracking_settings when you want to stop charges without losing the row; use untrack_* to deactivate entirely.
Audience — Demographics & Geography (cache-first)
| Tool | Credits | What it does |
|---|---|---|
get_creator_audience_demographics | Free | Cached age + gender + language for a tracked creator |
get_creator_audience_geography | Free | Cached top countries + cities |
refresh_creator_audience | 50 on cache miss | Cache-first refresh; charged only on miss. Auto-refunded on profile_only / INSUFFICIENT_SAMPLE |
Snapshots profile the creator's engaged audience (commenters), not raw followers. Every snapshot carries data_source, signal_breakdown, and confidence_level. Default cache window: 30 days. lookup_creator also accepts audience_demographics, audience_geography, and freshness_days for one-shot enrichment of untracked creators.
Sounds — Audio Intelligence
| Tool | Credits | What it does |
|---|---|---|
get_trending_sounds | 25 | Velocity-ranked sounds (videos_7d default). Filter by platform or commerce-safe |
get_breakout_sounds | 25 | Fastest-accelerating sounds off a small base (distinct from absolute volume) |
search_sounds | 10 | Fuzzy title search |
get_sound_details | 5 (+10) | Metadata + aggregate stats; resolve=true maps to canonical track via ISRC/Spotify (+$0.10 first time) |
get_sound_videos | 25 | Videos using a sound, sorted by views or publish date |
get_sound_usage_history | 5 | Daily usage time-series with deltas |
get_creator_sounds | 25 | Sounds owned by a creator with UGC metrics |
Sound data is also free via get_keyword_search_results / get_niche_monitor_data with data_type: "sounds". Use breakout for “what just took off,” trending for “what's biggest this week.”
Platform field availability: TikTok is richest (title, duration, cover, usage_count, commerce flag). YouTube has title, cover, owner. Instagram has title and owner_nickname. Unavailable fields return null.
Utility
| Tool | Credits | What it does |
|---|---|---|
check_job_status | Free | Poll any async job (agents, Satellite, batch, post collect) |
get_credit_balance | Free | Remaining balance and credit pricing |
Async Operations
Agent runs, Satellite lookups, video analysis, and post collection queue background work. MCP tools auto-poll for roughly 25 seconds, then hand back control:
- The tool queues the job and polls briefly
- If it finishes quickly, you get full results in one call
- If still running, you get a
job_id/job_type(and often a results-tool hint) - Use
check_job_statusor the matchingget_*tool later — the assistant should not busy-wait
Canonical done signal: finalized: true. Status "completed" alone can mean secondary AI jobs (analysis, intelligence) are still running — null analysis/intelligence fields mean “not yet,” not “no data.” Agent runs take ~15–20 minutes median (up to ~45 for broad runs with Meta ads). Treat partial_failure as usable data.
Webhook for agent completion: content_research_agent.run.completed (legacy orbit.run.completed / comet.run.completed still fire during the REST migration window).
Resources & Playbook
The MCP server exposes four read-only resources:
| URI | What it is |
|---|---|
virlo://docs/intent-cookbook | Good vs bad intents, write formula, suggest_keywords workflow — read before drafting intent |
virlo://docs/agent-playbook | Intent routing, virality scoring, intelligence semantics, audience trust, spend discipline — read before substantial research |
virlo://docs/api-overview | Tool catalog + recommended workflows |
virlo://docs/credit-costs | Per-tool credit table |
Same content on the web: Intent Cookbook · /intent-cookbook.txt · Agent Playbook · /agent-playbook.txt.
Workflow Prompts
Four pre-built prompts guide multi-step research (tool names stay as above):
full_niche_analysis
- One-shot agent via
search_keywords - Review videos, outliers, analysis, trends
- Deep-dive top creators with
lookup_creator - Recurring agent via
create_niche_monitor - Actionable summary
Example: "Use the full_niche_analysis prompt for viral cooking content"
creator_deep_dive
lookup_creatorwith videos / outliers- Content pattern analysis
- Optional
track_creator
Example: "Run creator_deep_dive for @khaby.lame on TikTok"
trend_scout
get_emerging_trends+get_trends_digest- Top viral videos (optional
get_breakout_sounds) - Rising hashtags
- Actionable trend report
Example: "Use trend_scout to see what's trending across all platforms"
genre_monitor
- Recurring TikTok agent via
create_niche_monitor - Wait for
finalized: true - Free discovery slices: sounds / hashtags / rising outliers / benchmarks / affinity
- Genre brief
Example: "Use genre_monitor for progressive house"
Credit Costs
Creation costs credits; reads are free. Per-tool rates match the REST API — see Billing & Pricing and the MCP resource virlo://docs/credit-costs.
