Overview
MCP v2 replaces 70+ individual tools with 5 universal meta-tools. Any skill, prompt, or agent instruction that references old tool names must be updated. What changed:| v1 (old) | v2 (new) |
|---|---|
search_linkedin_users(keywords, location) | execute("linkedin", "search", "search_users", {"keywords": ..., "location": ...}) |
| 70+ tool definitions in context | 5 compact meta-tools |
| No caching | Built-in cache with query_cache and export_data |
| No server-side filtering | Server-side filtering, aggregation, grouping |
Tool Mapping
| Old tool | New call |
|---|---|
search_linkedin_users(keywords, location, count) | execute("linkedin", "search", "search_users", {"keywords": ..., "location": ..., "count": ...}) |
get_linkedin_profile(user) | execute("linkedin", "user", "get", {"user": ...}) |
get_linkedin_company(company) | execute("linkedin", "company", "get", {"company": ...}) |
search_linkedin_companies(keywords, count) | execute("linkedin", "search", "search_companies", {"keywords": ..., "count": ...}) |
search_linkedin_jobs(keywords, location, count) | execute("linkedin", "job_search", "search_jobs", {"keywords": ..., "count": ...}) |
search_linkedin_posts(keywords, count) | execute("linkedin", "post", "search_posts", {"keywords": ..., "count": ...}) |
get_linkedin_user_posts(user) | execute("linkedin", "post", "get_user_posts", {"user": ...}) |
find_linkedin_email(user) | execute("linkedin", "email", "find", {"user": ...}) |
google_linkedin_search(query, count) | execute("linkedin", "google", "search", {"query": ..., "count": ...}) |
Twitter/X
| Old tool | New call |
|---|---|
search_twitter_users(query) | execute("twitter", "search", "search_users", {"query": ...}) |
get_twitter_user(username) | execute("twitter", "user", "get", {"username": ...}) |
get_twitter_user_tweets(username) | execute("twitter", "user_tweets", "get", {"username": ...}) |
| Old tool | New call |
|---|---|
search_instagram_users(query) | execute("instagram", "search", "search_users", {"query": ...}) |
get_instagram_user(username) | execute("instagram", "user", "get", {"username": ...}) |
get_instagram_post(url) | execute("instagram", "post", "get", {"url": ...}) |
YouTube
| Old tool | New call |
|---|---|
search_youtube(query, count) | execute("youtube", "search", "search_videos", {"query": ..., "count": ...}) |
get_youtube_channel(channel_id) | execute("youtube", "channel", "get", {"channel_id": ...}) |
get_youtube_video(video_id) | execute("youtube", "video", "get", {"video_id": ...}) |
| Old tool | New call |
|---|---|
search_reddit(query) | execute("reddit", "search", "search", {"query": ...}) |
get_reddit_user(username) | execute("reddit", "user", "get", {"username": ...}) |
get_reddit_posts(subreddit) | execute("reddit", "posts", "get", {"subreddit": ...}) |
YC / SEC / Web
| Old tool | New call |
|---|---|
search_yc_companies(query) | execute("yc", "search", "search", {"query": ...}) |
get_yc_company(slug) | execute("yc", "company", "get", {"slug": ...}) |
search_sec_filings(query) | execute("sec", "search", "search", {"query": ...}) |
get_sec_document(url) | execute("sec", "document", "get", {"url": ...}) |
scrape_webpage(url) | execute("webparser", "parse", "parse", {"url": ...}) |
If an old tool name is not in the mapping above, use
discover(source, category) to find the correct endpoint name, then call execute().Migration Rules
1. Direct tool references → execute()
Before:2. Unknown endpoint/params → add discover() first
Before:3. Known endpoint — skip discover()
discover() is only needed when the skill doesn’t know the exact endpoint name or parameter format. If the skill hardcodes specific execute() calls, discover is not required.
4. Multi-step workflows
Before:5. New capabilities — pagination, filtering, export
v2 adds cache-based tools that didn’t exist in v1. Update skills to take advantage:Pagination (new)
Pagination (new)
Results from
execute() include cache_key. If more data exists:Server-side filtering (new)
Server-side filtering (new)
Filter results without consuming context tokens:
Aggregation (new)
Aggregation (new)
Calculate statistics server-side:
Export to file (new)
Export to file (new)
Download full datasets:
6. Error handling
Before:Migration Checklist
Replace tool calls
- Replace all
search_linkedin_*,get_linkedin_*→execute("linkedin", ...) - Replace all
search_twitter_*,get_twitter_*→execute("twitter", ...) - Replace all
search_instagram_*,get_instagram_*→execute("instagram", ...) - Replace all
search_youtube_*,get_youtube_*→execute("youtube", ...) - Replace all
search_reddit_*,get_reddit_*→execute("reddit", ...) - Replace all
search_yc_*,get_yc_*→execute("yc", ...) - Replace all
search_sec_*,get_sec_*→execute("sec", ...) - Replace all
scrape_webpage→execute("webparser", "parse", ...)
Add new capabilities
- Add
get_pagefor large result sets - Add
query_cachefor filtering/aggregation - Add
export_datafor file downloads
Clean up
- Remove references to disabled sources (e.g., Crunchbase)
- Update error handling to v2 format
Automated Migration
With Claude Code Skill
Instead of migrating manually, use the dedicated anysite-mcp-migration skill for Claude Code: Install via Claude Code:- “Migrate the skill at /path/to/SKILL.md to v2”
- “Migrate this prompt to the new anysite MCP” (paste old prompt)
- “What v1 tools are still in this skill?” (paste text)
- Scans for all v1 tool references
- Replaces with correct
execute()calls - Adds
discover()only where needed - Adds
get_page,query_cache,export_datawhere beneficial - Removes disabled source references
- Updates error handling
- Outputs a migration summary
With Any LLM (Auto-Migration Prompt)
Copy the prompt below and paste it along with your old skill text into any LLM:Auto-Migration Prompt (click to expand)
Auto-Migration Prompt (click to expand)