{"serverId":"mcp-registry/io.audioalpha.www/mcp","tools":[{"name":"get_episode_details","fixed":{"name":"get_episode_details","description":"Get metadata for a specific episode including title, publish date, duration, α-sentiment score (crypto) (0-10 scale), traditional markets sentiment (0-10), and podcast info.","inputSchema":{"type":"object","required":["episode_id"],"properties":{"episode_id":{"type":"string","description":"Episode ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"get_episode_full","fixed":{"name":"get_episode_full","description":"Get full episode data in one call — details, summary, quotes and asset mentions.","inputSchema":{"type":"object","required":["episode_id"],"properties":{"episode_id":{"type":"string","description":"Episode ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":71,"tokensAfter":71},{"name":"get_episode_quotes","fixed":{"name":"get_episode_quotes","description":"Get all quotes extracted from a specific episode, with speaker, α-sentiment score (0-10 scale) and associated ticker.","inputSchema":{"type":"object","required":["episode_id"],"properties":{"episode_id":{"type":"string","description":"Episode ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":82,"tokensAfter":82},{"name":"get_episode_summary","fixed":{"name":"get_episode_summary","description":"Get the transcript summary for a specific episode, including assets mentioned and their α-sentiment (0-10 scale).","inputSchema":{"type":"object","required":["episode_id"],"properties":{"episode_id":{"type":"string","description":"Episode ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":81,"tokensAfter":81},{"name":"get_episode_transcript","fixed":{"name":"get_episode_transcript","description":"Get the full transcript for a specific episode including speaker diarization and speaker name mapping. Pro and Enterprise plans only.","inputSchema":{"type":"object","required":["episode_id"],"properties":{"episode_id":{"type":"string","description":"Episode ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88},{"name":"get_market_episodes","fixed":{"name":"get_market_episodes","description":"Get all crypto podcast episodes published on a given date, including podcast name, α-sentiment score (0-10 scale), and transcript summary.","inputSchema":{"type":"object","required":[],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":92,"tokensAfter":92},{"name":"get_market_featured_quotes","fixed":{"name":"get_market_featured_quotes","description":"Get the top featured quotes from crypto podcasts for a given date, ranked by relevance score.","inputSchema":{"type":"object","required":[],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"version_number":{"type":"integer","default":-1,"minimum":-1,"description":"Which revision of the snapshot to return. Each snapshot date can be re-generated multiple times (version 1, 2, 3, …). Use -1 (the default) to always get the latest authoritative version (is_latest = true). If you request a specific version that does not exist for the given date + snapshot_type, the latest version is returned instead."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":395,"tokensAfter":395},{"name":"get_market_history","fixed":{"name":"get_market_history","description":"Fetch a historical time series of daily market-level snapshots (overall market sentiment, not a single ticker). Call this when the user asks how the overall market mood/regime has trended over time, wants to chart market α-sentiment / z-score over a window, or needs a range of daily market snapshots to compute averages or momentum.\n\nOptional: `days` (1-1000, default 30; tier may cap lower). For a single ticker's history use get_ticker_history instead.\n\nTier caps on `days`: free=7, alpha=365, pro","inputSchema":{"type":"object","required":[],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"days":{"type":"integer","default":30,"maximum":1000,"description":"Number of historical days to return, counting back from the anchor date. Tier-capped: free=7, alpha=365, pro=730, enterprise=1000. Requests above the cap are silently capped."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":460,"tokensAfter":460},{"name":"get_market_signals","fixed":{"name":"get_market_signals","description":"Get scenario strategic signals across all assets for a given date. Each signal includes signal type, horizon, scenario description, trigger conditions, confidence score and invalidating conditions. (Not financial advice.)","inputSchema":{"type":"object","required":[],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"version_number":{"type":"integer","default":-1,"minimum":-1,"description":"Which revision of the snapshot to return. Each snapshot date can be re-generated multiple times (version 1, 2, 3, …). Use -1 (the default) to always get the latest authoritative version (is_latest = true). If you request a specific version that does not exist for the given date + snapshot_type, the latest version is returned instead."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":428,"tokensAfter":428},{"name":"get_market_snapshot","fixed":{"name":"get_market_snapshot","description":"Get the overall crypto market daily snapshot (daily narrative insight report) for a given date. Returns daily headline, delta narrative, regime + justification, α-sentiment OHLC scores (0-10 scale), α-sentiment z-scores (-3 to +3), narrative summary, narrative intesity score, market psychology, consensus score, key tensions, surprise mentions (ticker + why + impact score), episode volume score, and wordcloud.","inputSchema":{"type":"object","required":[],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"version_number":{"type":"integer","default":-1,"minimum":-1,"description":"Which revision of the snapshot to return. Each snapshot date can be re-generated multiple times (version 1, 2, 3, …). Use -1 (the default) to always get the latest authoritative version (is_latest = true). If you request a specific version that does not exist for the given date + snapshot_type, the latest version is returned instead."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":482,"tokensAfter":482},{"name":"get_market_themes","fixed":{"name":"get_market_themes","description":"Get narrative themes dominating the crypto podcast space on a given date. Each theme includes title, summary, podcast coverage count, fragility score, novelty score and counterfactual narrative.","inputSchema":{"type":"object","required":[],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"version_number":{"type":"integer","default":-1,"minimum":-1,"description":"Which revision of the snapshot to return. Each snapshot date can be re-generated multiple times (version 1, 2, 3, …). Use -1 (the default) to always get the latest authoritative version (is_latest = true). If you request a specific version that does not exist for the given date + snapshot_type, the latest version is returned instead."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":420,"tokensAfter":420},{"name":"get_my_favorite_assets","fixed":{"name":"get_my_favorite_assets","description":"Get the list of crypto assets the authenticated user has favorited on AudioAlpha. Always returns the latest authoritative snapshot (is_latest) per asset.","inputSchema":{"type":"object","required":[],"properties":{"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":272,"tokensAfter":272},{"name":"get_my_favorite_podcasts","fixed":{"name":"get_my_favorite_podcasts","description":"Get the list of podcasts the authenticated user follows on AudioAlpha.","inputSchema":{"type":"object","required":[],"properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":52,"tokensAfter":52},{"name":"get_my_feed","fixed":{"name":"get_my_feed","description":"Get a personalized feed based on the user's favorite assets and followed podcasts. Always uses the latest authoritative snapshot (is_latest). Returns snapshot_date and an array of assets, each containing: ticker, daily snapshot (sentiment, attention, consensus, momentum, summary), trading signals (with horizon, scenario, trigger, confidence, invalidating condition), and curated quotes (ranked with selection reason).","inputSchema":{"type":"object","required":[],"properties":{"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"episodes_lookback":{"type":"integer","default":3,"maximum":10,"description":"Number of recent episodes per followed podcast (max 10, default 3)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":384,"tokensAfter":384},{"name":"get_podcast_episodes","fixed":{"name":"get_podcast_episodes","description":"Get recent episodes for a specific podcast by podcast ID.","inputSchema":{"type":"object","required":["podcast_id"],"properties":{"limit":{"type":"integer","default":5,"maximum":20,"description":"Number of episodes to return (max 20, default 5)"},"podcast_id":{"type":"string","description":"Podcast ID from search_podcasts"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"get_podcast_latest","fixed":{"name":"get_podcast_latest","description":"Get the latest episode for a specific podcast, including title, episode_id, transcript summary, episode artwork, α-sentiment (crypto markets), and traditional markets sentiment.","inputSchema":{"type":"object","required":["podcast_id"],"properties":{"podcast_id":{"type":"string","description":"Podcast ID from search_podcasts"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"get_podcast_latest_full","fixed":{"name":"get_podcast_latest_full","description":"Get the latest episode for a podcast with full details including quotes and asset mentions.","inputSchema":{"type":"object","required":["podcast_id"],"properties":{"podcast_id":{"type":"string","description":"Podcast ID from search_podcasts"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":82,"tokensAfter":82},{"name":"get_ticker_featured_quotes","fixed":{"name":"get_ticker_featured_quotes","description":"Get featured podcast quotes for a specific crypto asset on a given date, with α-sentiment scores (0-10 scale), ranked by selection score.","inputSchema":{"type":"object","required":["ticker"],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"ticker":{"type":"string","description":"Asset ticker symbol. IMPORTANT: all crypto tickers MUST be suffixed with \"-USD\" — e.g. BTC-USD, ETH-USD, SOL-USD. Bare symbols like \"BTC\" will not match and will return an empty / 404 response."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"version_number":{"type":"integer","default":-1,"minimum":-1,"description":"Which revision of the snapshot to return. Each snapshot date can be re-generated multiple times (version 1, 2, 3, …). Use -1 (the default) to always get the latest authoritative version (is_latest = true). If you request a specific version that does not exist for the given date + snapshot_type, the latest version is returned instead."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":476,"tokensAfter":476},{"name":"get_ticker_history","fixed":{"name":"get_ticker_history","description":"Fetch a historical time series of daily snapshots for one crypto ticker. Call this when the user asks about a ticker's recent trend, wants to chart or plot α-sentiment / α-index / α-pulse over time, asks \"how has X changed over the last N days\", or needs a window of data to compute averages, momentum, or volatility.\n\nRequired: `ticker` — MUST be suffixed with \"-USD\" (e.g. \"BTC-USD\", \"ETH-USD\", \"SOL-USD\"). Bare symbols like \"BTC\" will not match. Optional: `days` (1-1000, default 30; tier may cap ","inputSchema":{"type":"object","required":["ticker"],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"days":{"type":"integer","default":30,"maximum":1000,"description":"Number of historical days to return, counting back from the anchor date. Tier-capped: free=7, alpha=365, pro=730, enterprise=1000. Requests above the cap are silently capped."},"ticker":{"type":"string","description":"Asset ticker symbol. IMPORTANT: all crypto tickers MUST be suffixed with \"-USD\" — e.g. BTC-USD, ETH-USD, SOL-USD. Bare symbols like \"BTC\" will not match and will return an empty / 404 response."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":532,"tokensAfter":532},{"name":"get_ticker_leaderboard","fixed":{"name":"get_ticker_leaderboard","description":"Get ticker leaderboard for a given date. Without category param, returns highlights object that includes assetSnapshot of top_alpha_index, top_alpha_pulse, top_riser, top_dropper, most_mentioned, most_surprising. With category param (alpha_index/alpha_pulse/risers/droppers/mentioned/surprising), returns array of LeaderboardEntry.","inputSchema":{"type":"object","required":[],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"limit":{"type":"integer","default":5,"maximum":20,"description":"Number of episodes to return (max 20, default 5)"},"category":{"type":"string","description":"Leaderboard category: alpha_index, alpha_pulse, risers, droppers, mentioned, or surprising. Omit for highlights (top 1 from each)."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":426,"tokensAfter":426},{"name":"get_ticker_signals","fixed":{"name":"get_ticker_signals","description":"Get scenario signals for a specific crypto asset. Returns signal type, time horizon, scenario description, trigger conditions, confidence score and invalidating conditions. (Not financial advice.)","inputSchema":{"type":"object","required":["ticker"],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"ticker":{"type":"string","description":"Asset ticker symbol. IMPORTANT: all crypto tickers MUST be suffixed with \"-USD\" — e.g. BTC-USD, ETH-USD, SOL-USD. Bare symbols like \"BTC\" will not match and will return an empty / 404 response."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"version_number":{"type":"integer","default":-1,"minimum":-1,"description":"Which revision of the snapshot to return. Each snapshot date can be re-generated multiple times (version 1, 2, 3, …). Use -1 (the default) to always get the latest authoritative version (is_latest = true). If you request a specific version that does not exist for the given date + snapshot_type, the latest version is returned instead."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":490,"tokensAfter":490},{"name":"get_ticker_snapshot","fixed":{"name":"get_ticker_snapshot","description":"Get detailed daily insights snapshot for a specific crypto asset. Returns daily asset summary, α-index (0-1), α-pulse (0-1), episode count, attention share (0-1), α-sentiment OHLC and 1-7 day delta (0-10 scale), bull/bear/neutral ratios (0-1), consensus score (0-1), novelty score (0-1), momentum, narrative intensity, narrative summary.","inputSchema":{"type":"object","required":["ticker"],"properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format. Omit for latest."},"ticker":{"type":"string","description":"Asset ticker symbol. IMPORTANT: all crypto tickers MUST be suffixed with \"-USD\" — e.g. BTC-USD, ETH-USD, SOL-USD. Bare symbols like \"BTC\" will not match and will return an empty / 404 response."},"version_info":{"type":"boolean","default":false,"description":"When true, include version metadata in the response: both version_num (the revision number) and version_label (a human-readable label like \"eod_utc\" for the initial end-of-day build, or \"revised\" when a later-indexed podcast triggered a regeneration). When false (the default), neither field is included. Note: the snapshot generation \"status\" field is ALWAYS returned regardless of this flag."},"snapshot_type":{"enum":["crypto","tradfi"],"type":"string","default":"crypto","description":"Asset universe to draw the snapshot from. Currently only \"crypto\" is available; \"tradfi\" is reserved for a future release. Defaults to \"crypto\"."},"version_number":{"type":"integer","default":-1,"minimum":-1,"description":"Which revision of the snapshot to return. Each snapshot date can be re-generated multiple times (version 1, 2, 3, …). Use -1 (the default) to always get the latest authoritative version (is_latest = true). If you request a specific version that does not exist for the given date + snapshot_type, the latest version is returned instead."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":530,"tokensAfter":530},{"name":"search_podcasts","fixed":{"name":"search_podcasts","description":"Search for crypto podcasts by name. Returns podcast ID, name, artist, language, x-handle, and artwork.","inputSchema":{"type":"object","required":["q"],"properties":{"q":{"type":"string","description":"Podcast name search query e.g. unchained, bankless, chopping block"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88}],"toolsChanged":23,"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."}