{"serverId":"mcp-registry/com.honesthook/social-data","tools":[{"name":"archive_movers","fixed":{"name":"archive_movers","description":"Who grew and who shrank most in a niche, over a window we have already archived — the comparison done for you, ranked. Call `archive_coverage` first: it lists the valid niche ids and how far back each one goes. `hours` is 1 to 720 (30 days) and defaults to 24; `limit` is 1 to 100 and defaults to 20. A value outside the range is rejected rather than silently trimmed. Requires an API key sent as `Authorization: Bearer <key>` — free key at https://honesthook.com/docs#key; costs 10 credits — free wh","inputSchema":{"type":"object","required":["niche"],"properties":{"hours":{"type":"integer","description":"How many hours back the window goes. Optional, 1 to 720, 24 by default. Outside that range the API answers 400."},"limit":{"type":"integer","description":"How many movers to return. Optional, 1 to 100, 20 by default. Outside that range the API answers 400."},"niche":{"type":"string","description":"The niche id, as `archive_coverage` returns it — for example `ai-agents`. A niche we do not archive is refused by the API."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Biggest movers in a niche"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":307,"tokensAfter":307},{"name":"archive_trends","fixed":{"name":"archive_trends","description":"How a niche moved over a window we have already archived, grouped by item: where each account stood then and where it stands now. This is the question nobody can answer after the fact — nobody photographs the past retroactively. Call `archive_coverage` first for the valid niche ids and how far back the archive goes. `from` and `to` are ISO 8601; without them you get the last 7 days, and the archive caps any window at 90 days. Requires an API key sent as `Authorization: Bearer <key>` — free key a","inputSchema":{"type":"object","required":["niche"],"properties":{"to":{"type":"string","description":"End of the window, ISO 8601. Optional, defaults to now."},"from":{"type":"string","description":"Start of the window, ISO 8601 (`2026-09-05T00:00:00Z`). Optional. Anything else answers 400 rather than being guessed at."},"limit":{"type":"integer","description":"How many items to return. Optional."},"niche":{"type":"string","description":"The niche id, as `archive_coverage` returns it — for example `ai-agents`. A niche we do not archive is refused by the API."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Niche trend history"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":317,"tokensAfter":317},{"name":"fetch_posts","fixed":{"name":"fetch_posts","description":"Read the recent posts of one public profile: the text, likes, replies, reposts, quotes, the post URL and when it was published. Threads, Bluesky, Mastodon and Telegram. Boosts and reposts of other people are filtered out — you get what the account itself wrote, its replies included. `limit` is optional on Bluesky and Mastodon, and each has its own range: a value outside it is rejected rather than silently trimmed. Threads does not accept `limit` at all and answers 400 if you send it — its posts ","inputSchema":{"type":"object","required":["platform","handle"],"properties":{"limit":{"type":"integer","description":"How many posts to return. Optional, and Bluesky and Mastodon only. The valid range depends on the platform and the API rejects a value outside it instead of trimming it, so the count you get is never quietly smaller than the count you asked for. Threads answers 400 if you send this at all: its posts come from the profile document, not from a query you can size."},"handle":{"type":"string","description":"The account handle, without the leading @. On Mastodon it must be `user@instance`, because the same local name exists on many servers."},"platform":{"enum":["bluesky","mastodon","telegram","threads"],"type":"string","description":"Which platform to read the posts from."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Fetch recent posts"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":380,"tokensAfter":380},{"name":"fetch_profile","fixed":{"name":"fetch_profile","description":"Read one public profile and get the numbers back: follower count, following count, posts count, bio, verified flag and avatar. Works on Instagram, TikTok, Threads, Bluesky, Mastodon, GitHub, Pinterest, SoundCloud, Linktree, Medium and Telegram. Mastodon handles are always `user@instance` — the local name alone identifies nobody. Requires an API key sent as `Authorization: Bearer <key>` — free key at https://honesthook.com/docs#key; costs 1 credit.","inputSchema":{"type":"object","required":["platform","handle"],"properties":{"handle":{"type":"string","description":"The account handle, without the leading @. On Mastodon it must be `user@instance`, because the same local name exists on many servers."},"platform":{"enum":["bluesky","github","instagram","linktree","mastodon","medium","pinterest","soundcloud","telegram","threads","tiktok"],"type":"string","description":"Which platform to read the profile from."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Fetch a public profile"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":276,"tokensAfter":276},{"name":"github_repos","fixed":{"name":"github_repos","description":"The public repositories of one GitHub account, with stars and forks. GitHub only — this is the one platform whose repositories we read. `limit` is optional: 30 by default, which is GitHub's own page size, and 100 at most, which is GitHub's ceiling. Requires an API key sent as `Authorization: Bearer <key>` — free key at https://honesthook.com/docs#key; costs 1 credit.","inputSchema":{"type":"object","required":["handle"],"properties":{"limit":{"type":"integer","description":"How many repositories to return. Optional, 30 by default, 100 at most. Outside that range the API answers 400."},"handle":{"type":"string","description":"The GitHub username, without the leading @: letters, digits and single hyphens, up to 39 characters."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List a GitHub account's repos"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":224,"tokensAfter":224}],"toolsChanged":5,"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."}