{"serverId":"mcp-registry/com.meetsponsors/mcp","tools":[{"name":"import_status","fixed":{"name":"import_status","description":"Poll the progress of a bulk import batch by its batchId. Returns total/queued/done/failed counts plus startedAt/finishedAt timestamps. Batches expire after 7 days.","inputSchema":{"type":"object","required":["batchId"],"properties":{"batchId":{"type":"string","description":"The batchId returned by youtuber_add or youtuber_bulk_add."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"sponsor_get","fixed":{"name":"sponsor_get","description":"Get detailed information about a specific sponsor by ID. Strips raw scrape data and llm internal analysis blobs.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","description":"Sponsor ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"sponsor_search","fixed":{"name":"sponsor_search","description":"Search sponsors by name, description, industry tags, or filters. Returns compact results (id, name, tagline = what the brand sells in a few words, website, niches, industryTags, country, operations, medianSubscribers). Use sponsor_get for full detail on a specific sponsor.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":1,"minimum":1,"description":"Page number for pagination"},"sort":{"enum":["updatedAt","name","operations"],"type":"string","default":"updatedAt","description":"Sort field"},"limit":{"type":"integer","default":10,"maximum":20,"minimum":1,"description":"Results per page (max 20)"},"order":{"enum":["asc","desc"],"type":"string","default":"desc","description":"Sort order"},"niches":{"type":"array","items":{"type":"string"},"description":"Filter by niche IDs"},"search":{"type":"string","description":"Search query (name or description)"},"status":{"enum":["VALIDATED","NEED_CONFIRMATION","NEED_INVESTIGATION","NOT_A_SPONSOR"],"type":"string","description":"Filter by sponsor status"},"category":{"type":"string","description":"Filter by industry tag category"},"language":{"type":"string","description":"Filter by language (e.g., EN, FR)"},"maxMedianSubscribers":{"type":"integer","description":"Maximum median subscribers"},"minMedianSubscribers":{"type":"integer","description":"Minimum median subscribers of YouTubers they sponsor"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":399,"tokensAfter":399},{"name":"sponsor_stats","fixed":{"name":"sponsor_stats","description":"Get statistics for a sponsor: number of YouTubers, median subscribers, operations per week/month/year","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","description":"Sponsor ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"youtuber_add","fixed":{"name":"youtuber_add","description":"Add a single YouTuber to the database and trigger the full enrichment pipeline (tags, niches, description, similarity, sponsor detection). Returns a batchId you can poll with import_status. Prefer passing a channel ID (UCxxxxxxxxxxxxxxxxxxxxxx, 24 chars) — handles ('@xxx') and URLs work too but cost an extra YouTube API quota point per call to resolve.","inputSchema":{"type":"object","required":["input"],"properties":{"input":{"type":"string","description":"Channel ID (UCxxx, preferred), handle ('@xxx'), or full youtube.com URL."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":161,"tokensAfter":161},{"name":"youtuber_bulk_add","fixed":{"name":"youtuber_bulk_add","description":"Add up to 50 YouTubers in one call and trigger enrichment for each. Returns a batchId you can poll with import_status. Strongly prefer channel IDs (UCxxxxxxxxxxxxxxxxxxxxxx, 24 chars) over handles/URLs — handles cost an extra YouTube API quota point each, which depletes the daily 10k budget faster.","inputSchema":{"type":"object","required":["inputs"],"properties":{"inputs":{"type":"array","items":{"type":"string"},"maxItems":50,"description":"Array of channel IDs (UCxxx, preferred), handles ('@xxx'), or full youtube.com URLs."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":162,"tokensAfter":162},{"name":"youtuber_get","fixed":{"name":"youtuber_get","description":"Get detailed information about a specific YouTuber by their YouTube channel ID. Includes llmDescription and llmSponsorProfile (LLM-friendly summaries), lastAnalyzedAt (when sponsors were last detected on the channel — every channel is re-scanned weekly; use youtuber_refresh if it is older than 7 days and you need fresher data), and lastFullAnalysisAt (last full-history analysis; null if never — see youtuber_fullAnalysis).","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"YouTube channel ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":164,"tokensAfter":164},{"name":"youtuber_search","fixed":{"name":"youtuber_search","description":"Search YouTubers with advanced filters: subscribers, language, niches, sponsors worked with, monthly frequency, etc. All filters combine with AND — including hasWorkedWith, which keeps only creators who worked with EVERY listed domain. For \"worked with brand A OR brand B\", run one search per brand (or use sponsor_youtubers). Returns compact results. Use youtuber_get for full detail.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":1,"minimum":1,"description":"Page number"},"limit":{"type":"integer","default":10,"maximum":20,"minimum":1,"description":"Results per page (max 20)"},"niches":{"type":"array","items":{"type":"string"},"description":"Filter by niche IDs"},"search":{"type":"string","description":"Search by channel name"},"sortBy":{"type":"string","default":"subscriber_count","description":"Sort field"},"country":{"type":"string","description":"Filter by country code"},"language":{"type":"string","description":"Filter by language (e.g., EN, FR)"},"sortOrder":{"enum":["asc","desc"],"type":"string","default":"desc","description":"Sort order"},"hasWorkedWith":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Sponsor website domains (e.g. \"nordvpn.com\"). AND filter: the creator must have worked with ALL of them, so each extra domain narrows the results (max 10). Not an OR: for \"any of these brands\", run one search per brand."},"maxSubscribers":{"type":"integer","description":"Maximum subscriber count"},"minSubscribers":{"type":"integer","description":"Minimum subscriber count"},"hasNotWorkedWith":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Exclude YouTubers who worked with ANY of these sponsor website domains (max 10)"},"monthlyFrequency":{"type":"number","description":"Minimum monthly video frequency"},"maxRatioSponsored":{"type":"number","maximum":100,"minimum":0,"description":"Maximum percentage of sponsored videos"},"minRatioSponsored":{"type":"number","maximum":100,"minimum":0,"description":"Minimum percentage of sponsored videos"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":585,"tokensAfter":585}],"toolsChanged":8,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}