Agentic Stock Contributor MCP Server
Uses Google Trends data as a demand signal: the server imports Google Trends CSVs and reads related queries for a seed keyword ("Breakout" is not a volume) to compute trend means, lead windows (event date minus a configurable weeks lead) and related/rising queries. These pick candidate keywords which can then be scanned for Adobe Stock supply through stock_scan.
Fetches weekly attention series from Wikipedia article page views via stock_fetch_attention(source=wikipedia), giving an agent a proxy for interest over time that can be combined with Adobe Stock supply data through opportunities.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Agentic Stock Contributor MCP Servermeasure Adobe Stock supply for 'cozy winter coffee' and rate the niche"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agentic Stock Contributor
Not technical? Paste this to your AI agent (Claude Code, Codex, Cursor or Antigravity, running on your own computer; OpenCode also works):
Install and use this toolkit for me:
https://github.com/Grunte12/agentic-stock-contributor. Read INSTALL.md and follow it. Explain each step in simple words and ask me before you change any settings.The only thing you do yourself is load one Chrome extension (about 2 minutes); your agent walks you through it.
An end-to-end toolkit for working on Adobe Stock as a contributor with an AI agent: measure the market, plan sets, check and package your images, stage a verified upload for your final click, and read the outcomes. It has four parts that install together:
Part | What it gives the agent |
Skill + playbook ( | The operating rules and the 10-stage workflow, loaded by any agent that supports skills |
Know-how library ( | Mindset, niche research, QC, metadata/SEO, upload flow, community evidence (also served by the |
MCP server ( | Deterministic, traceable numbers: supply, season, own portfolio, Adobe's accept/reject outcomes, verified staging |
Chrome extension | Reads Adobe Stock pages and your contributor dashboard for the server; never clicks Submit |
Plus local commands (stdlib only) for the steps between "images exist" and "ready to stage": lint-registry, check-images, qc-tiles,
check-qc, build-csv, prepare-plan. You bring your own image generator and upscaler.
Start: docs/SETUP.md (about 10 minutes) · Safety, limits, terms: docs/SAFETY.md · Workflow: knowledge/production-workflow.md · Agents: AGENTS.md · Templates: examples/. Unofficial; not affiliated with Adobe. MIT licensed.
Details
Tools for AI agents that work on Adobe Stock. A Chrome extension reads Adobe Stock search pages and your own contributor dashboard; an MCP server turns what it reads into deterministic, traceable numbers: how crowded a keyword is, how your portfolio sells, and which uploads Adobe accepted or rejected (with Adobe's own cause).
The server gives an AI agent numbers about Adobe Stock supply. Code makes every number; the agent chooses keywords, reads tables and decides.
Mostly read-only. Its writes are upload staging and upload metadata, both off by default and only for a verified plan: staging drops files on the page's own drop zone (no clicks) to fill the portal's New list; metadata uses a short allow list of guarded clicks (Upload CSV, generative-AI box, include box, Save work, Select All, the People/Property answer 'No') and the portfolio read clicks plain page-number controls. It never clicks Submit or Delete (anything so named is refused in code), reads no cookies, automates no login and bypasses no CAPTCHA. Stdlib only (Python 3.11+, no dependencies).
Related MCP server: levea-mcp-server
What it measures (and what it cannot)
Public Adobe Stock pages show: result count, AI flag (is_gentech), creator, category, size, and (asset page) keywords. They do not show download counts, views or upload dates (checked 2026-10-10). So there is no D/MO, no "new vs old" share and no gap score. Metrics (all in src/adobe_stock_analytics/metrics.py):
Metric | Meaning |
| count and band (<2k high niche, <15k medium, <50k moderate, else saturated) |
| AI-only count ÷ all count |
| AI share among the top results sorted by downloads (do AI images win?) |
| how concentrated the top-by-downloads results are |
| keywords shared by top assets (asset pages; only the keywords visible without clicking) |
| GO / MAYBE / SKIP / UNMEASURED from rules in |
| imported Google Trends CSV; event date minus |
| your own dashboard ( |
| Adobe's own accept/reject outcomes ( |
| do low-supply niches sell better for you? Joins each group's downloads with the supply rating of its keyword ( |
| keywords your sold assets share ( |
| suggests |
| Google Trends related queries for a seed ( |
| Weekly attention series fetched by an agent: |
supply_rating is about supply only. Demand comes from Trends and your own sales.
Upload staging, know-how and skill
stock_upload_metadata(plan_path)/ CLIupload-metadata: applies the plan's CSV through the portal's own Upload CSV dialog, then sets generative AI, people/property and include-in-submission for all staged files and saves; never clicks Submit. Needsupload_metadata.enabled(user's switch) and refuses when the New list does not hold exactly the plan's files. Verified by reading All (N), Submit N, per-tile keywords and the two checkboxes back.stock_upload_stage(plan_path, only?)/ CLIupload-stage: plan = the JSON written byprepare-plan(ready_for_upload: true, no failures, fresh). Every file is re-hashed; the extension fetches each file from the bridge (/v1/file, dispatched job only), re-checks sha256, drops them on the Uploads page's own drop zone, and reads the portal's "File types: All (N)" count back. Success = the count rose by exactly the number staged. A failed or partial stage stops the queue (never retried blindly). Protected folders can never be staged.upload_stage.enabledinconfig/stock_analytics.jsonis the user's switch, read on every use. Details:knowledge/upload-and-portal.md.stock_knowledge(topic): the know-how (mindset, niche method, workflow, QC, metadata, upload, community evidence) as markdown, served by the MCP itself;indexlists topics. The MCPinitializereply carries the core rules asinstructions.skills/adobe-stock/SKILL.md+knowledge/:python3 stock.py install-skill --confirm-writecopies them to~/.claude/skills/adobe-stock/(dry run without the flag).Not live-verified yet: whether Adobe's uploader accepts files set this way. Probe with one file first.
Rules
Every number has provenance (
obs_idormetric_id). Missing =null+ reason, never 0.Tables are rendered by
stock_report;stock_verify_docfails a doc with edited tables or numbers that are not cited as[m:<metric_id>].No MCP tool accepts a URL, a number, a pacing value or a threshold. Pacing (25 s + jitter, 150 pages/day) and thresholds live in
config/stock_analytics.json.The queue stops on CAPTCHA, restriction, sign-in wall, HTTP 403/429, unknown page shape, or repeated filter failures. It never retries or bypasses. Only the user resumes:
python3 stock.py resume.
The verifier checks digits only. A number spelled as a word is not checked, so it is a guard, not proof; the tables stay the source of truth.
Setup
Add the MCP server (
print-mcp-configprints the JSON;.mcp.json.exampleis a template).Write the pairing token into the extension folder:
python3 stock.py write-extension-token(creates the git-ignoredextension/token.js).Chrome →
chrome://extensions→ Developer mode → Load unpacked →extension/. No token typing needed. A Chrome profile signed out of Adobe is recommended for market scans (not required).In an agent session call
stock_status;bridge_connectedshould be true. Thenstock_scan,stock_wait,stock_report.
Without the extension, scripts/live_via_opencli.py <scans.json> runs the same queue through OpenCLI in your Chrome (dev/fallback).
Dashboard
Charts (opportunity ranking, niche map, attention over time, your downloads by sub-niche, posting windows) rendered from stored metrics as inline SVG. No scripts, no network.
Agent: call
stock_dashboard. It recomputes metrics from stored observations and returns ahttp://127.0.0.1:<port>/dashboard?t=<token>link for the user to open. The page reloads itself every minute.User: click the extension's toolbar button (0.5.0 or later). It asks the bridge for the same link and opens it in a tab.
Offline copy:
adobe-stock-analytics dashboard --out file.html.
The link token is derived from the pairing token but opens the dashboard only; it cannot pair an extension or post results. The route rejects a foreign Host header and any request with an Origin header, and sends no-store, no-referrer and a CSP that forbids scripts. Treat the link as private: the page shows your own downloads and earnings.
Tests
cd tests && PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -p 'test_*.py'Docs
docs/ has the setup and safety guides. CHANGELOG.md tracks extension changes.
This server cannot be deployed
Maintenance
Related MCP Connectors
Full-cycle SEO automation for AI agents: technical audits, SEO articles, machine-readable pricing.
Real SEO data for AI assistants: page audits, Keyword Planner volumes, Search Console history.
Marketing data and actions for AI agents: GA4, Search Console, ads, social, SEO and WordPress.
Deterministic visual marketing engine. Your agent plans, renders, and posts on-brand campaigns.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to control Adobe Photoshop programmatically, supporting recipe workflows, state awareness, and generative AI features through natural language commands.161286,691 npm652MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to turn natural-language creative direction, transcripts, and source media into fully structured, editable video projects, then verify and render delivery files.2MIT

AppDrift MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables MCP clients such as Claude Desktop and Cursor to read tracked app keywords, opportunities, account apps, and action plans; generate or translate listing copy; review results; and apply accepted title, subtitle, keywords, or short-description fields to an editable draft without publishing to Apple or Google.28 npmMIT- AlicenseNot gradedqualityCmaintenanceEnables external AI agents to programmatically inspect, edit, and export image documents through tools for layers, selections, painting, adjustments, masks, history, and compositing.MIT