SideShift Scanner
An MCP server that pulls UGC creator-program data from SideShift, enabling creator profiling, content performance tracking, and creator recommendations for briefs or formats.
README
SideShift Scanner
An open-source MCP server on top of SideShift UGC creator-program data. It syncs your creators, posts, and performance history into a local file, then you just talk to it through an AI coding agent — no dashboard, no UI to learn.
flowchart LR
A["SideShift API"] -- sync --> B[("Local SQLite file")]
B -- reads/writes --> C["MCP Server"]
D["Claude Code / Desktop / Cowork"] -- ask anything --> C
C -- answers --> D
It's not trying to re-display what SideShift's own dashboard already shows you — it answers things that dashboard doesn't: real format-trend detection (from hashtags, not a guess), which creator actually fits a new brief and why, and drafted content briefs in a creator's own style.
Not affiliated with or endorsed by SideShift. Full build spec: docs/build-spec.md.
Setup
Four one-time steps, then everything else is just a chat message.
1. Install
git clone https://github.com/matthewhuang11/sideshift-scanner.git
cd sideshift-scanner
python3 -m venv .venv && source .venv/bin/activate && pip install -e .
2. Add your API key — copy the template and paste in your key (SideShift dashboard → Settings → Integrations):
cp .env.example .env
3. Point the agent at your Python — copy the template and fill in
the absolute path to .venv/bin/python from step 1:
cp .mcp.json.example .mcp.json
4. Restart Claude Code / Claude Desktop in this folder so it picks up the new MCP server.
That's it — no build step, no server to keep running.
Just ask
Sync my latest SideShift data
What are my top performing creators?
What formats are trending right now?
Recommend a creator for a hook-question style unboxing video
The model calls the tools itself and answers in plain language. Sync and analysis both happen as tool calls inside the conversation.
MCP tools
| Tool | Purpose |
|---|---|
sync_data |
Pull latest data (method='api' for real SideShift, 'csv' for sample data) |
list_creators |
Filter creators by niche / platform / status |
get_creator_profile |
Full profile: niche, style, platforms, performance history, best formats |
get_performance_summary |
Aggregate metrics + trend direction, scoped to creator/campaign/format/global |
top_performers |
Ranked list by a chosen metric |
detect_trending_formats |
Format/hook clusters outperforming the roster baseline |
recommend_creators_for_brief |
Ranked creators for a brief/format, with rationale |
generate_content_brief |
Draft a brief in a creator's own style, targeting a given or trending format |
<details> <summary><strong>Prefer the CLI, or want auto-sync? (no agent required)</strong></summary>
python -m ugc_analytics.cli sync --method api
python -m ugc_analytics.cli top-performers --metric views -n 5
To sync on a schedule instead of on request, a cron job calling the same command works well:
0 8 * * * cd /path/to/sideshift-scanner && .venv/bin/python -m ugc_analytics.cli sync --method api >> data/sync.log 2>&1
</details>
<details> <summary><strong>Project layout</strong></summary>
src/ugc_analytics/
db.py SQLite schema + connection helpers
models.py dataclasses for the internal schema
ingestion/
base.py IngestionAdapter interface + SyncResult
csv_adapter.py reads creators.csv / content_items.csv / performance_metrics.csv
api_adapter.py real SideShift API adapter (GET /creators, /programs, /posts, /posts/{id}/metrics-history)
analysis/
profiling.py creator niche/style tagging
performance.py aggregation + roster-baseline comparisons
trends.py format/hook clustering vs. baseline
matching.py creator-for-brief scoring
briefs.py generate_content_brief drafting
server.py MCP server wiring the tools above
cli.py local CLI fallback (sync, list-creators, top-performers, ...)
sample_data/ example CSVs matching the ingestion adapter's expected shape
tests/ unit tests for db, ingestion, and analysis (pytest, `pip install -e ".[dev]"`)
</details>
<details> <summary><strong>SideShift API notes</strong></summary>
SideShift publishes a public, API-key-authenticated REST API — docs at
app.sideshift.app/docs, no login
required to view them, OpenAPI spec at
app.sideshift.app/openapi/sideshift-api-public.yaml.
A few things the published docs get wrong that api_adapter.py corrects
for on real accounts: timestamps are Unix seconds, not milliseconds;
a post's creator/program links are top-level fields, not nested;
/posts/{id}/metrics-history wraps its payload in a data key. SideShift
also attributes some posts to "ghost handles" or removed creators that
/creators excludes by design — that content is still ingested (no
foreign-key requirement on it) and top_performers's include_unlisted
param toggles whether it's shown.
earnings on each post is ingested as revenue, but it's a running
total, not a per-day breakdown, and reads null on accounts where no
payouts have run yet.
</details>
<details> <summary><strong>Open questions / not built yet</strong></summary>
- Roster-only, or also profiling applicants who haven't posted yet?
- Single-user (local SQLite) or shared/hosted (Postgres)?
- Real content-style classification from captions/titles beyond hashtag extraction (e.g. an LLM tagging pass for tone/hook style).
</details>
Contributing
Issues and PRs welcome — in particular, someone with real SideShift
dashboard access smoke-testing ingestion/api_adapter.py against a live
API key (it's currently verified against fixture responses shaped like
the published OpenAPI spec, not a live account).
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.