UGC analytics and Creator Hub for TikTok, Instagram and YouTube: tracking, campaigns, jobs, events.
One address for any MCP client. You sign in once, after adding it.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Odel could not list its tools without signing in.
Official viral.app plugins and install shortcuts for coding agents and chat apps. One install connects your agent to the viral.app MCP server: 100+ tools for UGC analytics, account and video tracking, tags and tag workflows, the Creator Hub (campaigns, briefs, job postings, applications, creator chat, payouts), the viral video library, and live TikTok/Instagram/YouTube/Facebook lookups. Plugins also bring five skills that teach the agent the workflows.
The MCP server lives at https://viral.app/api/mcp (streamable HTTP, OAuth). You need a viral.app account with API access. Manage everything at viral.app/app/org/api/agents.
Every client signs in with OAuth in your browser. viral.app supports dynamic client registration, so you never paste a client ID, secret, or API key. During consent you pick one organization.
Chat apps: Claude.ai and Claude Desktop · ChatGPT · Grok · Other chat apps
Plugins (MCP server + skills): Claude Code · Codex CLI · GitHub Copilot CLI · VS Code · Cursor · Gemini CLI · Qwen Code · Kiro · Devin · Factory Droid · Grok Build
MCP server only: Augment · JetBrains Junie · OpenCode · Amp · Goose · Zed · Warp · Mistral Vibe · Any other MCP client
Add a custom connector with this URL, and leave client ID and secret empty:
https://viral.app/api/mcp
Open the connector settings or go to Settings, Connectors, Add custom connector.
Results such as top videos, creators, campaigns and KPI charts render as interactive cards in Claude on the web, Desktop and mobile.
Install the viral.app plugin for ChatGPT.
On grok.com, open Connectors, choose New Connector, then Custom, and paste https://viral.app/api/mcp.
For Grok Bot, install viral.app from its Marketplace once it is listed there.
These accept a custom remote MCP URL with OAuth. Use https://viral.app/api/mcp:
viralapp.claude plugin marketplace add https://github.com/fmd-labs/viral-app-agents
claude plugin install viral-app@viral-app
Or interactively: /plugin marketplace add https://github.com/fmd-labs/viral-app-agents, then /plugin install viral-app. Afterwards run /mcp, pick viral_app, and authenticate in the browser. The fmd-labs/viral-app-agents shorthand also works if you have GitHub SSH access.
codex plugin marketplace add https://github.com/fmd-labs/viral-app-agents
codex plugin add viral-app@viral-app
Or interactively: /plugins in the Codex TUI. Start a new session afterwards, then authenticate with codex mcp login viral_app.
Requires Codex CLI 0.147 or newer. Older versions fail the OAuth login with an "Authorization server response missing required issuer" error (a Codex bug fixed in 0.147.0); update with npm install -g @openai/codex@latest and retry.
If you only want the MCP server without the plugin:
codex mcp add viral_app --url https://viral.app/api/mcp
codex mcp login viral_app
copilot plugin marketplace add fmd-labs/viral-app-agents
copilot plugin install viral-app@viral-app
Install the plugin (MCP server and skills) through agent plugins. Add the marketplace to your user settings:
"chat.plugins.enabled": true,
"chat.plugins.marketplaces": ["fmd-labs/viral-app-agents"]
Then search @agentPlugins in the Extensions view and install viral-app.
For the MCP server alone:
Or add to .vscode/mcp.json:
{ "servers": { "viral_app": { "type": "http", "url": "https://viral.app/api/mcp" } } }
Or add to .cursor/mcp.json:
{ "mcpServers": { "viral_app": { "type": "http", "url": "https://viral.app/api/mcp" } } }
This repo also ships a Cursor plugin manifest (.cursor-plugin/) that bundles the MCP server and skills for the Cursor Marketplace.
gemini extensions install https://github.com/fmd-labs/viral-app-agents
Restart Gemini CLI, then run /mcp auth viral_app to sign in.
qwen extensions install fmd-labs/viral-app-agents:viral-app
You get the MCP server and the skills; check the connection with /mcp.
In the Powers panel choose Add Custom Power, then Import power from GitHub, and enter:
https://github.com/fmd-labs/viral-app-agents
devin plugins install fmd-labs/viral-app-agents#plugins/viral-app
Sign in to Devin first (devin auth login) if you have not, then run devin mcp login viral_app to connect viral.app.
droid plugin marketplace add https://github.com/fmd-labs/viral-app-agents
droid plugin install viral-app@viral-app-agents --scope user
Droid names the marketplace after the repository, hence @viral-app-agents. Run /mcp to finish the browser sign-in.
grok plugin marketplace add fmd-labs/viral-app-agents
grok plugin install viral-app --trust
The CLI refuses to install a plugin until you pass --trust.
These clients get the MCP server without the bundled skills.
auggie mcp add viral_app --transport http --url https://viral.app/api/mcp
In the IDE extension: Settings, MCP, Add remote MCP, connection type HTTP.
Add to .junie/mcp/mcp.json in your project (or ~/.junie/mcp/mcp.json), or use Settings, Tools, Junie, MCP Settings:
{ "mcpServers": { "viral_app": { "url": "https://viral.app/api/mcp" } } }
In the Junie CLI, run /mcp, select viral_app, and choose Authorize.
Add to opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": { "viral_app": { "type": "remote", "url": "https://viral.app/api/mcp" } }
}
Then run opencode mcp auth viral_app.
amp mcp add viral_app https://viral.app/api/mcp
Amp opens the browser sign-in on its next start.
Open this link to add the extension to Goose Desktop (GitHub does not render goose:// links, so copy it into your browser):
goose://extension?type=streamable_http&url=https%3A%2F%2Fviral.app%2Fapi%2Fmcp&id=viral_app&name=viral.app&description=UGC%20analytics%20and%20tracking%20from%20viral.app
In the CLI: goose configure, Add Extension, Remote Extension (Streamable HTTP), URL https://viral.app/api/mcp.
To add the skills as well, run goose plugin install https://github.com/fmd-labs/viral-app-agents.git. Goose loads them as viral-app:viral-app-mcp, viral-app:ugc-reporting, and so on.
Add to your Zed settings, or use Settings, AI, MCP Servers, Add Server, Add Remote Server:
{ "context_servers": { "viral_app": { "url": "https://viral.app/api/mcp" } } }
Zed prompts you to sign in.
Settings, Agents, MCP servers, Add, then paste:
{ "mcpServers": { "viral_app": { "url": "https://viral.app/api/mcp" } } }
vibe mcp add viral_app --url https://viral.app/api/mcp
Point the client at https://viral.app/api/mcp with streamable HTTP and OAuth. The server publishes standard OAuth discovery metadata and supports dynamic client registration, so no pre-shared credentials are needed. Its official MCP Registry name is io.github.fmd-labs/viral-app.
Plugins bundle five skills. Agents load them on demand, and each keeps longer material in a references/ folder next to it.
| Skill | Use it for |
|---|---|
viral-app-mcp | The core guide: connecting and auth, the credit quote-then-confirm flow, rules for writes that reach creators, ids and units, what MCP cannot do, and which skill to load next |
ugc-reporting | Weekly or monthly UGC reports, KPI and leaderboard recipes with period-over-period change, cards in Claude and ChatGPT, Slack summaries, recurring reports through scheduled tasks or a ChatGPT page |
creator-campaigns | Creator Hub end to end: briefs in markdown, campaigns with the preview step, creator assignment, job drafts and publishing, applications, creator chat, and payout reads |
viral-research | The viral video library, similar videos, hook and scene breakdowns, AI analysis of tracked videos, live lookups, and turning findings into hooks and a brief |
ugc-automations | "Watch for X and do Y": MCP Events in ChatGPT, polling fallbacks for other clients, latency per event, and handling untrusted creator text |
| Path | Purpose |
|---|---|
.claude-plugin/marketplace.json | Claude-format marketplace catalog (Claude Code, Copilot CLI, VS Code, Factory, Grok Build). Lists viral-app |
.agents/plugins/marketplace.json | Codex marketplace catalog |
.cursor-plugin/marketplace.json | Cursor marketplace catalog (Cursor, Grok Bot) |
gemini-extension.json | Gemini CLI extension manifest (Gemini CLI, Qwen Code) |
plugin.json | Agent Plugins 1.0 manifest for the repository root (Kiro, Mistral Vibe, and Copilot CLI or Devin when the repository root is installed directly; Goose imports only the skills) |
mcp.json | Agent Plugins 1.0 MCP config for the repository root (read with plugin.json) |
skills/ | Copy of the plugin skills for the root-level packages (Gemini CLI, Agent Plugins). Generated from plugins/viral-app/skills/ with scripts/sync-skills.sh |
server.json | Official MCP Registry entry io.github.fmd-labs/viral-app |
.github/workflows/publish-mcp-registry.yml | Validates server.json on pull requests and publishes it to the MCP Registry from main via GitHub OIDC |
plugins/viral-app/.claude-plugin/plugin.json | Claude-format plugin manifest with the MCP server inline (Claude Code, Copilot CLI, VS Code, Devin, Grok Build) |
plugins/viral-app/.codex-plugin/plugin.json | Codex plugin manifest |
plugins/viral-app/.cursor-plugin/plugin.json | Cursor plugin manifest |
plugins/viral-app/.mcp.json | Claude-format MCP config (Codex, Factory, Grok Build; Claude Code merges it with the inline entry) |
plugins/viral-app/skills/ | The five skills (canonical copy) |
scripts/sync-skills.sh | Copies plugins/viral-app/skills/ to skills/; --check fails when they differ |
scripts/build-chatgpt-package.sh | Builds dist/viral-app-chatgpt.zip for OpenAI's plugin dashboard (Upload new version): the Codex manifest, .mcp.json, skills and assets of plugins/viral-app, checked against OpenAI's package rules, without the Claude and Cursor manifests |
plugins/viral-app/assets/ | Plugin logo (logo.svg, logo.png at 400x400) |
When releasing:
viral-app version together in plugin.json, gemini-extension.json, plugins/viral-app/.claude-plugin/plugin.json, plugins/viral-app/.codex-plugin/plugin.json, plugins/viral-app/.cursor-plugin/plugin.json, and its entries in .claude-plugin/marketplace.json and .agents/plugins/marketplace.json (grep -rn '"version"' --include=*.json . lists them).plugins/viral-app/skills/, then run scripts/sync-skills.sh (--check verifies the copies match).scripts/build-chatgpt-package.sh and upload dist/viral-app-chatgpt.zip as a new version in the OpenAI plugin dashboard. The script writes the published plugin's package name (app-6a8713d41dc48191b33e75c49a764db3) into the ZIP's manifest, because the dashboard refuses any other name. Changes to the hosted MCP server need no upload; manifest and skill changes do.server.json has its own version; the MCP Registry rejects a version it has already published, so bump it with every change to that file.