Skip to content

com.honesthook/social-data

by honesthook.com · remote · no sign-in to list tools · v1.0.1 · published by com.honesthook

Instagram, TikTok, Threads, Bluesky and 8 more: one API, one key, one JSON shape

Deletes · 3Final · 1Changes · 3

12 tools: 3 can delete or cancel things, 1 do something that can't be undone, 3 change things and 5 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http social-data https://honesthook.com/api/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "archive_coverage" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":true}; The name "archive_coverage" says "archive": a word for removing or ending something.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

12 tools

Deletes or cancels 3Claude Code: deny
  • archive_coverageHow much trend history HonestHook already holds, by niche — AI agents, developer tools, indie SaaS — with the most recent hourly window captured.1 finding

    Why it is in this group

    • The name "archive_coverage" says "archive": a word for removing or ending something.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "archive_coverage" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":true}; The name "archive_coverage" says "archive": a word for removing or ending something.

      What this check looks for
    Description, as the server wrote it
    How much trend history HonestHook already holds, by niche — AI agents, developer tools, indie SaaS — with the most recent hourly window captured. Use this to check whether the archive goes back far enough for your question before you build on it. No API key needed, and it costs 0 credits.

    Annotations the server declares

    • readOnlyHint: true
  • archive_moversWho grew and who shrank most in a niche, over a window we have already archived — the comparison done for you, ranked.No findings

    Why it is in this group

    • The name "archive_movers" says "archive": a word for removing or ending something.
    Description, as the server wrote it
    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 when nothing moved.
Can't be undone 1Claude Code: ask
  • profile_historyThe daily history of one public profile we have already archived: how its follower count moved, day by day.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote itContains invisible characters, shown as [U+…]
    The daily history of one public profile we have already archived: how its follower count moved, day by day. ⚠[U+FE0F] It only covers what was captured after somebody first asked for that profile — the series starts the day of the first call and never earlier, and the response says so in `covered_from`. A handle nobody ever asked for comes back with an empty series, which means 'we never looked', never 'nothing changed'. Requires an API key sent as `Authorization: Bearer <key>` — free key at https://honesthook.com/docs#key; costs 1 credit — free when nothing is found.
Changes things 3Claude Code: ask
  • check_balanceHow many credits are left on your HonestHook API key: the free monthly allowance, the purchased balance, when the allowance renews, and what this cycle spent, broken down by endpoi…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    How many credits are left on your HonestHook API key: the free monthly allowance, the purchased balance, when the allowance renews, and what this cycle spent, broken down by endpoint. Requires an API key sent as `Authorization: Bearer <key>` — free key at https://honesthook.com/docs#key. Checking the balance costs 0 credits — reading it never changes it.

    Annotations the server declares

    • readOnlyHint: true
  • github_reposThe public repositories of one GitHub account, with stars and forks.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • pricingWhat each HonestHook call costs in credits, and which calls are free when they find nothing.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    What each HonestHook call costs in credits, and which calls are free when they find nothing. Includes the free monthly allowance that every key gets with no card, at https://honesthook.com/docs#key. Use this to estimate cost before building. No API key needed, and it costs 0 credits.

    Annotations the server declares

    • readOnlyHint: true
Only reads 5Claude Code: allow
  • fetch_postsRead the recent posts of one public profile: the text, likes, replies, reposts, quotes, the post URL and when it was published.Reads text others writeNo findings

    Why it is in this group

    • The name "fetch_posts" says "fetch": a word for reading.

    What it can reach

    • untrusted-inputThe name "fetch_posts" says "fetch" and "post": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "read" and "post": it reads posts, which other people can write.
    Description, as the server wrote it
    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 arrive inside the same document as the profile, so there is no upstream to ask for a count. Telegram ignores `limit`: it returns every post in the public preview page, with no login and no bot token. Telegram's `followers` is always null on this endpoint — the preview page only prints the subscriber count abbreviated, not exact. Requires an API key sent as `Authorization: Bearer <key>` — free key at https://honesthook.com/docs#key; costs 1 credit.
  • fetch_profileRead one public profile and get the numbers back: follower count, following count, posts count, bio, verified flag and avatar.Reads text others writeNo findings

    Why it is in this group

    • The name "fetch_profile" says "fetch": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "read" and "post": it reads posts, which other people can write.
    Description, as the server wrote it
    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.
  • get_docsHow to authenticate, how the response envelope is shaped, what happens when credits run out, and where to get a free key with 1,000 credits a month and no card.Reads private dataNo findings

    Why it is in this group

    • The name "get_docs" says "get": a word for reading.

    What it can reach

    • private-dataThe name "get_docs" says "get" and "doc": it reads documents.
    Description, as the server wrote it
    How to authenticate, how the response envelope is shaped, what happens when credits run out, and where to get a free key with 1,000 credits a month and no card. Read this before writing code against the API. No API key needed, and it costs 0 credits.

    Annotations the server declares

    • readOnlyHint: true
  • list_endpointsList every HonestHook API endpoint: public profiles (followers, following, posts count, bio, verified), recent posts, the historical trend archive, and per-profile history.Reads text others writeNo findings

    Why it is in this group

    • The name "list_endpoints" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "list" and "post": it reads posts, which other people can write.
    Description, as the server wrote it
    List every HonestHook API endpoint: public profiles (followers, following, posts count, bio, verified), recent posts, the historical trend archive, and per-profile history. Returns the URL and the query parameters for each, and says which ones you can call as a tool on this server — profiles through `fetch_profile`, posts through `fetch_posts` — and which are HTTP only. No API key needed, and it costs 0 credits.

    Annotations the server declares

    • readOnlyHint: true
  • list_platformsList every social platform HonestHook can read right now — the platforms you'd otherwise write a scraper for: Instagram, TikTok, Threads, Bluesky, Mastodon, GitHub, Pinterest, Soun…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "list_platforms" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "thread": it reads messages.
    • untrusted-inputThe description's first sentence says "list" and "thread": it reads messages, which other people can write.
    Description, as the server wrote it
    List every social platform HonestHook can read right now — the platforms you'd otherwise write a scraper for: Instagram, TikTok, Threads, Bluesky, Mastodon, GitHub, Pinterest, SoundCloud, Linktree, Medium, Telegram — and what a handle looks like on each one. Use this before asking for a profile, to check the platform is covered and the handle format is right. No API key needed, and it costs 0 credits.

    Annotations the server declares

    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

8 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Reads private data2
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write4
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__social-data__profile_history"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 14:33 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
7
Protocol version
2026-07-28
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
none
Authorization servers
none
Legacy HTTP+SSE transport
no
Dynamic client registration
not observed
Client ID metadata documents
not observed
  • HighThe whole server

    The endpoint served tools/list without credentials, and the list has 7 tools that change things (3 destructive, 1 irreversible, 3 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://honesthook.com/api/mcp: tools/list returned 12 tools to an anonymous client, including archive_coverage (destructive), archive_movers (destructive), archive_trends (destructive), profile_history (irreversible), pricing (write) and 2 more

    What this check looks for

Install

Pinned to version 1.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http social-data https://honesthook.com/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__social-data__list_platforms",
      "mcp__social-data__list_endpoints",
      "mcp__social-data__get_docs",
      "mcp__social-data__fetch_profile",
      "mcp__social-data__fetch_posts"
    ],
    "ask": [
      "mcp__social-data__pricing",
      "mcp__social-data__check_balance",
      "mcp__social-data__profile_history",
      "mcp__social-data__github_repos"
    ],
    "deny": [
      "mcp__social-data__archive_coverage",
      "mcp__social-data__archive_movers",
      "mcp__social-data__archive_trends"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as social-data. Review it before you use it.

Capability tags behind 6 rules
  • mcp__social-data__list_platforms private-data, untrusted-input
  • mcp__social-data__list_endpoints untrusted-input
  • mcp__social-data__get_docs private-data
  • mcp__social-data__fetch_profile untrusted-input
  • mcp__social-data__fetch_posts untrusted-input
  • mcp__social-data__profile_history outbound