Skip to content

TrueScrape

io.github.TrueScrape/truescrapeTrueScrapestreamable-httpv0.5.1Scanned

Public social media data: Instagram, TikTok, YouTube, X, Reddit, LinkedIn and 30+ more platforms.

254 tools: 1 can delete or cancel things, 7 do something that can't be undone, 204 change things and 42 only read.

Tools: 1 delete, 7 irreversible, 204 write, 42 read.
  • Reads private data · 2
  • Reads text others write · 252
  • Can send data out · 120
  • 59 findings

Anlyon alternative

212 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

254 tools

Deletes or cancels 1Claude Code: deny
  • cancel_watchDelete a watch.No findings

    Why it is in this group

    • The name "cancel_watch" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a watch. Free.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Can't be undone 7Claude Code: ask
  • facebook_commentRepliesReplies to a comment.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "facebook_commentReplies" says "comment": a word for a change.
    • The name "facebook_commentReplies" also says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "facebook_commentReplies" says "reply": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_commentReplies" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Replies to a comment. Replies under one comment on a public Facebook post, ten per page. Pass the post URL and the comment id (the `id` of any item from /v1/facebook/post-comments), then `pagination.cursor` for the next page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_commentRepliesReplies under one comment.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "instagram_commentReplies" says "comment": a word for a change.
    • The name "instagram_commentReplies" also says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "instagram_commentReplies" says "reply": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_commentReplies" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Replies under one comment. The full reply thread under a single comment. Take `comment_id` from `data.items[].id` on /v1/instagram/post-comments; the post URL is still required because Instagram addresses replies through the media that carries them. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mastodon_postRepliesPost replies.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "mastodon_postReplies" says "post": a word for a change.
    • The name "mastodon_postReplies" also says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "mastodon_postReplies" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mastodon_postReplies" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post replies. Public replies to a Mastodon post, in thread order, from every server the hosting server knows of. Servers return at most about 60 replies to a signed-out reader. Replies from accounts that opted out of search engine indexing are left out. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • peertube_commentRepliesComment replies.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "peertube_commentReplies" says "comment": a word for a change.
    • The name "peertube_commentReplies" also says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "peertube_commentReplies" says "reply": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "peertube_commentReplies" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Comment replies. Every reply under one top-level comment on a PeerTube video, nested replies included, each with `parentId` naming the comment it answers. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_commentRepliesComment replies.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "reddit_commentReplies" says "comment": a word for a change.
    • The name "reddit_commentReplies" also says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "reddit_commentReplies" says "reply": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_commentReplies" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Comment replies. The reply thread under a single comment: the continuation behind Reddit's "load more comments". Takes a comment permalink, or "postId:commentId". Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_commentRepliesReplies to a comment.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "tiktok_commentReplies" says "comment": a word for a change.
    • The name "tiktok_commentReplies" also says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "tiktok_commentReplies" says "reply": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "tiktok_commentReplies" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Replies to a comment. The reply thread under one TikTok comment. `parentId` on each reply points back at the comment it answers, so nested threads reconstruct cleanly. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_commentRepliesComment replies.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "youtube_commentReplies" says "comment": a word for a change.
    • The name "youtube_commentReplies" also says "reply": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "youtube_commentReplies" says "reply": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_commentReplies" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Comment replies. Replies to one comment thread. Takes a `cursor` from the `replyCursors` list on `/v1/youtube/video/comments`, or (as a convenience) a video `url` plus `comment_id`, in which case we locate the thread on the first comment page for you. Costs 1 credit. Pass either `cursor` (from `replyCursors` on /v1/youtube/video/comments), or both `url` and `comment_id`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
Changes things 204Claude Code: ask
  • amazon_offersAll seller offers for a product.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    All seller offers for a product. Every offer on an Amazon listing (price, seller, condition, Prime eligibility and shipping), alongside the product itself. Costs 3 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • amazon_productProduct details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Product details. Public details for one Amazon listing: title, brand, price, availability, rating, specifications and an inline review sample. Costs 3 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • amazon_shopAmazon Shop page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Amazon Shop page. A creator's public Amazon storefront: their name, the product links the page exposes, and the storefront feed of idea lists (with Amazon's own item count), shoppable videos (id, title, thumbnail and attached ASINs) and shoppable photos. The first request needs no pageToken and already returns the videos embedded on the page. Pass `pagination.cursor` back as `pageToken`, unchanged, with the same shop URL for the next page; a page can carry lists, videos, photos or any mix. A continuation page carries the feed ONLY. Amazon serves it as a fragment with no profile markup, so every identity field (display name, bio, avatar) is null on page two onwards. ASINs are the products the storefront shows attached to an item, which for a long idea list is the first screenful rather than the whole list; `itemCount` is the true total. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • appleMusic_albumAlbum details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Album details. Public Apple Music album: artist, release date, genre, artwork and total runtime. The track listing and copyright line are in `raw`, behind `include_raw=true`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • appleMusic_artistArtist details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Artist details. Public Apple Music artist page: editorial bio, artist image, banner and genre. Apple publishes no follower or play counts, so those fields are null rather than guessed. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • appleMusic_trackTrack details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Track details. Public Apple Music track: artist, album, duration, genre, release date and the 30-second preview URL. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • bitchute_channelChannel profile.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a destination (input.channel): what the tool writes goes there.
    Description, as the server wrote it
    Channel profile. A public BitChute channel: name, description, subscriber count, video count, total views and creation date. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • bitchute_channelVideosChannel videos.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a destination (input.channel): what the tool writes goes there.
    Description, as the server wrote it
    Channel videos. A BitChute channel's public videos, newest first, 50 per page, with view counts. Likes and comment counts are not in the list; `bitchute.video` has likes. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • bitchute_videoVideo details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video details. A public BitChute video: title, description, hashtags, duration, publish date, channel, views and likes. Dislikes are in `raw`. `commentCount` is always null. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • bluesky_postPost.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "bluesky_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "bluesky_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "bluesky_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post. A single public Bluesky post with like, reply, repost and quote counts, plus any attached images or video. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • bluesky_profileProfile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile. Public profile for a Bluesky account: followers, following, post count, bio, avatar, banner, and verification status. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • bluesky_userPostsUser posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "bluesky_userPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "bluesky_userPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "bluesky_userPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    User posts. Recent public posts from a Bluesky account, newest first. Reposts are excluded by default so the feed reflects what the account actually wrote. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • create_watchCheck an endpoint on a schedule and POST to webhook_url when its data changes.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "create_watch" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.endpoint): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Check an endpoint on a schedule and POST to webhook_url when its data changes. Each check is charged the endpoint's own credit cost, and refunded if it fails or comes back empty; creating a watch costs nothing.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • dailymotion_channelChannel profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel profile. Public profile of a Dailymotion channel: followers, following, video count, lifetime views, verification badge, country and creation date. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • dailymotion_channelVideosChannel videos.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel videos. A Dailymotion channel's public uploads, newest first, 50 per page, all the way back to the first upload. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • dailymotion_transcriptVideo transcript.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video transcript. A Dailymotion video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the first track. Most are generated automatically by Dailymotion. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • dailymotion_videoVideo details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video details. Public metadata for a Dailymotion video: views, likes, duration, tags, upload date and channel. Dailymotion has no public comments, so `commentCount` is null. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_albumAlbum details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Album details. A Deezer album: title, artist, label, UPC, release date, fans (`likeCount`) and its tracks. Pass `cursor` to page the tracks of a long album. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_artistArtist profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Artist profile. A Deezer artist: name, fans, album count, picture and link. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_artistAlbumsArtist albums.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Artist albums. An artist's albums, singles and EPs on Deezer. `likeCount` is the release's fans. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_artistTopTracksArtist top tracks.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Artist top tracks. An artist's most popular tracks on Deezer, most popular first. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_chartsCharts.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Charts. Deezer's global top tracks, albums, artists, playlists or podcasts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_playlistPlaylist contents.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Playlist contents. A public Deezer playlist: title, owner, description, cover, track count, fans and its tracks. Pass `cursor` to page the tracks of a long playlist. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_podcastPodcast details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Podcast details. A Deezer podcast: title, description, artwork and fans. Deezer publishes no episode count, so `postCount` is null. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_podcastEpisodesPodcast episodes.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Podcast episodes. A Deezer podcast's episodes, newest first. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_trackTrack details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Track details. A Deezer track: title, artist, album artwork, duration, release date, ISRC and tempo. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • deezer_userPlaylistsUser playlists.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    User playlists. A Deezer user's public playlists. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • ebay_producteBay listing details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    eBay listing details. Public details for an eBay listing: title, price, condition, seller and an inline sample of reviews. Costs 1 credit. Pass either `product_id` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_adAd details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Ad details. One ad from the Meta Ad Library by its archive id. Meta does not expose the archive as an addressable node for every ad; pass `page_id` as well and we find it by scanning that advertiser's archive instead. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_adTranscriptAd video transcript.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Ad video transcript. Retrieves a transcript for a single Facebook Ad Library video ad by ID or URL, read from the caption track Facebook publishes for the ad's video (`source: "captions"`). Transcription of ad videos without captions is coming soon; until then those answer `not_configured` (501) and are not charged. Credits are only deducted when a transcript is actually returned. Costs 1 credit. Pass exactly one of `id` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_eventEvent details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Event details. Full details for one public Facebook event: description, start and end time, venue with coordinates, host and ticket price range. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_groupPublic group info.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Public group info. Name, member count, privacy setting and description for a public Facebook group. Member count lands in `followerCount` (a group's equivalent of an audience size) and the privacy setting in `category`. Facebook rounds that count on large groups ("12K members"); `raw.memberCountIsApproximate` says whether the number you got was rounded. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_groupPostsPublic group posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "facebook_groupPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "facebook_groupPosts" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_groupPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Public group posts. Recent posts from a public Facebook group, with reaction, comment and share counts where Facebook renders them. Only the newest few stories render to a logged-out visitor, the same limit /v1/facebook/page-posts has. Private groups return an empty result; their posts are not public and we do not log in. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_marketplaceItemMarketplace listing details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Marketplace listing details. One public Facebook Marketplace listing: title, full description, price, location, delivery options and every photo. Facebook does not render the seller to a logged-out visitor, so seller identity is not returned. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_pageAdsAll ads for one advertiser.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    All ads for one advertiser. Ads a specific Facebook page is running or has run, from Meta's Ad Library. This is the competitor-monitoring endpoint. `pagination.cursor` is filled only where the deployment reads the Graph Ad Library API; otherwise `pagination.hasMore` says whether more exist. Costs 2 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_pagePostsPublic Page posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "facebook_pagePosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "facebook_pagePosts" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_pagePosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Public Page posts. Recent public posts from a Facebook Page, newest first, three per page, with text, reaction, comment and share counts, and the publish timestamp. Pass `pagination.cursor` back for the next three. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_pageReelsPublic Page videos and reels.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Public Page videos and reels. Public videos and reels from a Facebook Page. Reads the Page's reels tab first, ten per page with `pagination.cursor` for the next ten, and falls back to its video grid, which renders around twenty entries with titles, view counts and durations and has no cursor, so a Page with no reels returns its videos rather than an error. Items are keyed by video id and can be passed straight to /v1/facebook/post or /v1/facebook/post-transcript. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_postSingle post, video, or reel.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "facebook_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "facebook_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Single post, video, or reel. One public Facebook post, video or reel by URL, with its text and engagement counts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_postCommentsComments on a post.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "facebook_postComments" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "facebook_postComments" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_postComments" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Comments on a post. Top-level comments on a public Facebook post, with author, reaction count and reply count, in Facebook's "Most relevant" order. The first page is the head of the thread Facebook renders into the post, usually two comments; pass `pagination.cursor` back for the next ten. The post's full comment total is on /v1/facebook/post. Use /v1/facebook/comment-replies for the replies under one comment. `likeCount` is only as precise as Facebook publishes it: comment reactions ship in abbreviated form ("2.4K") with no exact figure anywhere in the payload, so counts above about a thousand are rounded at source. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_postTranscriptVideo transcript.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "facebook_postTranscript" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "facebook_postTranscript" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_postTranscript" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Video transcript. Transcript for a public Facebook video or reel, as one text block plus timed cues. Reads the caption track Facebook publishes for the video, auto-generated when the uploader added none (`source: "captions"`). Transcription of videos without captions is coming soon; until then such a video answers `not_configured` (501) and is not charged. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_profilePublic Page profile.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Public Page profile. Name, category, follower and like counts, description, banner and outbound links for a public Facebook Page. `followerCount` is as precise as Facebook renders it: exact on a small Page ("498 followers"), rounded on a large one ("28M followers", so ±500,000). `raw.followerCountIsApproximate` says which you got, and `raw.likeCount` carries the exact like figure Facebook always prints. Pass `extra_fetch=true` to also fill `createdAt`, the date the Page was created, which lives only on the Page transparency tab: it costs 1 extra credit and one large additional fetch, refunded if that fetch cannot be read. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_profileEventsEvents on a Page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Events on a Page. Events hosted by a public Facebook Page, upcoming ones first, with past events where Facebook still lists them, eight per page; pass `pagination.cursor` back for the next eight. Each carries start time, place, host and the cover photo. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_profilePhotosPhotos on a Page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Photos on a Page. Photos from a public Facebook Page's photo grid, eight per page, newest first; pass `pagination.cursor` back for the next eight. Facebook exposes each photo's accessibility caption rather than the text of the post it came from, so that is what lands in `title`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_activityPublic activity.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Public activity. Public events for a user: pushes, pull requests, issues, stars, forks and releases. GitHub caps this feed at 300 events / 90 days regardless of paging. Costs 1 credit. Pass either `handle` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_contributionsContributions calendar.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Contributions calendar. The contribution graph for one calendar year: a per-day count plus GitHub's 0–4 intensity level, and the annual total. Costs 1 credit. Pass either `handle` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_followersFollowers.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Followers. Accounts following this user, 30 per page. GitHub serves a reduced user payload here, so per-account counts are null. Costs 1 credit. Pass either `handle` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_followingFollowing.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Following. Accounts this user follows, 30 per page. GitHub serves a reduced user payload here, so per-account counts are null. Costs 1 credit. Pass either `handle` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_pullRequestsPull requests by a user.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "github_pullRequests" says "request": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "github_pullRequests" says "request" and "pull request": it writes something other people read.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "github_pullRequests" says "request": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Pull requests by a user. Pull requests authored by a user across all public repositories, newest first. `since` / `until` filter on creation date. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_repositoryRepository details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Repository details. Public details for a repository: stars, forks, open issues, topics, language and licence. Stars map to `likeCount`, forks to `shareCount`; open issues and pull requests are `openIssuesCount`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_trendingDevelopersTrending developers.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Trending developers. The public github.com/trending/developers board. Counts are null: the board renders names and popular repositories, not follower numbers. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_trendingRepositoriesTrending repositories.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Trending repositories. The public github.com/trending board. `likeCount` is total stars, `shareCount` total forks and `starsInPeriod` the stars gained in the chosen period. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_userUser or organisation profile.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    User or organisation profile. Public profile for a GitHub user or organisation: followers, public repo count, bio, location and links. Costs 1 credit. Pass either `handle` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • github_userRepositoriesUser repositories.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    User repositories. Public repositories owned by a user or organisation, 30 per page. Costs 1 credit. Pass either `handle` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • google_adAd details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Ad details. One creative from the Ads Transparency Centre, with every rendering variant and the per-country dates it ran. For a text ad, `headline`, `body` and `linkUrl` come from its rendered preview, and `linkUrl` is the address the ad displays. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • google_advertiserAdsAds run by an advertiser or domain.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Ads run by an advertiser or domain. Creatives in the Ads Transparency Centre for one advertiser id or one verified domain, with first-shown and last-shown dates. Pass the `cursor` from the previous response to page. Costs 2 credits. Pass either `domain` or `advertiser_id`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • google_jobsGoogle Jobs results.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Google Jobs results. Job postings for a query: title, company, location and the board it was syndicated from. Shares the `/search` anti-bot gate `google.search` already documents; a blocked attempt returns `upstream_blocked` and is not charged. Costs 5 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • google_newsGoogle News results.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Google News results. News articles for a query: title, source, and published time. Shares the `/search` anti-bot gate `google.search` already documents; a blocked attempt returns `upstream_blocked` and is not charged. Costs 5 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • google_shoppingGoogle Shopping results.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Google Shopping results. Shopping tiles for a query: title, price, currency and merchant. Shares the `/search` anti-bot gate `google.search` already documents; a blocked attempt returns `upstream_blocked` and is not charged. Costs 5 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • inference_ageGenderEstimate age and gender from an image.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Estimate age and gender from an image. Apparent age and gender estimated from a public image URL. This is a model ESTIMATE, not measured platform data, and every response is labelled as such. Requires an inference provider to be configured on the deployment. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_audioReelsReels using a sound.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Reels using a sound. Reels built on one audio track, the "N reels using this audio" list. Takes the numeric audio id or a /reels/audio/ URL. Falls back to the public audio page, which lists its first grid of reels only once rendered, as links and cover images. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_hashtagPostsPosts under a hashtag.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "instagram_hashtagPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "instagram_hashtagPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_hashtagPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Posts under a hashtag. Posts carrying a hashtag. `tab=top` is Instagram's ranking (one fixed page, no cursor); `tab=recent` is chronological and paginates. Falls back to the server-rendered tag page when the JSON surface declines, which returns the top grid only. Set `extra_fetch=true` to fill each post's publish date, like and comment counts and caption from its own page: 1 credit per item fetched, up to the page size. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_highlightStories inside a highlight.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Stories inside a highlight. Every story in one highlight reel, oldest first, with its media URLs. Takes the `id` from /v1/instagram/user-highlights, a bare numeric id, or a /stories/highlights/ URL. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_postPost or reel details.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "instagram_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "instagram_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post or reel details. One public post, reel or carousel with its caption, media URLs and engagement counts. Falls back to Instagram's public embed payload when the web client's persisted query is unavailable, so a Meta client release degrades this rather than breaking it. Play counts arrive in this same request, so there is no second fetch to skip and no play-count parameter to pass. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_postCommentsComments on a post or reel.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "instagram_postComments" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "instagram_postComments" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_postComments" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Comments on a post or reel. Top-level comments, newest first, about fifteen per page, each with its text, author, like count and date. Follow `pagination.cursor` for older comments. Set `include_replies=true` to also return any replies Instagram shipped inline with their parent. For the full reply thread under one comment, use /v1/instagram/comment-replies. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_profileProfile details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile details. Public profile for an Instagram account: followers, following, post count, bio, links and business category. Private accounts return their public shell with `isPrivate: true` rather than an error. That is a real answer. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_profilePostCountPost count for a profile.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "instagram_profilePostCount" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "instagram_profilePostCount" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_profilePostCount" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post count for a profile. The total post count on a public Instagram profile, exact wherever Instagram publishes the exact figure. Call this when a fuller profile is not needed. `source` names which of the two dialects Instagram ships a count in carried it (`edge_owner_to_timeline_media.count` or `media_count`). Instagram does not expose this metadata for every profile: when neither is present, `postCount` is null and the request is not charged. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_transcriptReel or video transcript.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Reel or video transcript. The caption track Instagram published for a reel or video, as one text block plus timed cues. We return Instagram's own track and never transcribe the audio ourselves, so a transcript here is always what the platform said rather than what a model guessed. **Read this before relying on it:** checked against 12 real reel payloads, none carried a caption track in any form: no inline transcript, and DASH manifests with video and audio tracks only. On current evidence Instagram publishes none, so this returns `empty_result` (free, never charged) rather than a transcript. It is shipped as experimental so the shape is stable if that changes. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_trendingReelsReels trending on Explore.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Reels trending on Explore. Reels off Instagram's public Explore grid. Worth knowing what this is and is not: Explore is region-shaped, so what comes back depends on where the request exits, and it is Instagram's editorial surface rather than a global chart. There is no public trending feed on Instagram; this is the closest one that exists. Set `extra_fetch=true` to fill each reel's publish date, caption and duration from its own page: 1 credit per item fetched, up to the page size. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_userEmbedProfile via the public embed card.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile via the public embed card. A profile read off Instagram's public embed card, with the embed HTML in `raw.html` for anyone who wants to render it. Instagram publishes embeds so third parties can display them, which makes this the profile path it has the least reason to gate. The same reasoning puts the post embed on /v1/instagram/post's fallback. It carries fewer fields than /v1/instagram/profile; reach for it when that one is blocked, or when you want the markup. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_userHighlightsStory highlight covers.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Story highlight covers. The highlight reels pinned to a profile: title, cover, and how many stories each holds. Pass an `id` from here to /v1/instagram/highlight for the stories inside one. Highlights are the only Instagram stories that stay public indefinitely: live stories expire in 24 hours and are not served logged-out. Costs 1 credit. Pass either `handle` or `user_id`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_userPostsPosts and reels from a profile.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "instagram_userPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "instagram_userPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_userPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Posts and reels from a profile. A profile grid, newest first, twelve posts per page, each with its caption, type and owner. Follow `pagination.cursor` for older posts. On the first page, reels also carry like, comment and play counts; other posts, and every post on later pages, have them null, because the grid does not carry them. No page carries a publish date. Fetch /v1/instagram/post for a specific post to get its counts and date, or set `extra_fetch=true` to fill each post's publish date, like and comment counts and caption from its own page in one call: 1 credit per item fetched, up to the page size. `authorHandle` is read per post: a collab or tagged post appears in a profile grid owned by the OTHER account, and this reports the real owner rather than the handle you asked for. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_userReelsReels from a profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Reels from a profile. A profile's reels, newest first, twelve per page, each with like, comment and play counts. Follow `pagination.cursor` for older reels. The first page also carries captions; later pages do not, so `text` is null there, and a collab reel owned by another account has `authorHandle` null. No page carries a publish date; fetch /v1/instagram/post for one reel's date, or set `extra_fetch=true` to fill each reel's publish date, caption and duration from its own page in one call: 1 credit per item fetched, up to the page size. If the reels tab is unavailable, the first page falls back to the clips in the profile grid, with captions but no counts and no cursor. An account with no public reels is an empty result, and is not charged. `raw.source` says which path answered. Costs 1 credit. Pass either `handle` or `user_id`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_userTaggedPostsPosts a profile is tagged in.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "instagram_userTaggedPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "instagram_userTaggedPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_userTaggedPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Posts a profile is tagged in. Public posts by other accounts that tagged this user (the "Tagged" tab). Note this is other people's content: `authorHandle` is the poster, not the tagged account. Users can hide the tab, which returns `empty_result`. Costs 1 credit. Pass either `handle` or `user_id`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • kick_clipClip.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Clip. A public Kick clip: title, creator, channel, duration, view count, and media URL. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • komi_pageKomi page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Komi page. Public Komi page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • kwai_postPost.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "kwai_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "kwai_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "kwai_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post. A single public Kwai video with its view, like, comment and forward counts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • kwai_profileProfile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile. Public Kwai profile: follower and following counts, public video count, likes received, bio, avatar, and creator category. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • kwai_userPostsUser posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "kwai_userPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "kwai_userPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "kwai_userPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    User posts. Public videos from a Kwai profile, newest first after any pinned ones, with view, like, comment and forward counts. Pass `pagination.cursor` back as `cursor` for the next page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkbio_pageLnk.Bio page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Lnk.Bio page. Public Lnk.Bio page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_adAd details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Ad details. One ad from LinkedIn's public Ad Library: creative, copy, advertiser, and the paying entity. Ads covered by EU disclosure rules also carry run dates, target countries and impression bands; ads outside those rules do not, and those fields come back null rather than guessed. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_companyCompany page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Company page. A LinkedIn company page: description, industry, follower count, headquarters, size, type, founding year, specialties, employee count and logo. Also works for school and showcase pages. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_companyPostsCompany posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "linkedin_companyPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "linkedin_companyPosts" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "linkedin_companyPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Company posts. Recent posts from a company page, with reaction and comment counts. Read from the company page itself: LinkedIn's dedicated /posts/ tab is behind the sign-in wall, but the same updates render on the public page. That caps the result at roughly the last ten posts. There is no logged-out pagination, so `hasMore` is always false. Posts by members that the company features carry that member as the author. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_postPost details.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "linkedin_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "linkedin_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "linkedin_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post details. One LinkedIn post: full text, media, author, publication time, reactions and comment count. Top-level comments LinkedIn publishes on the page ride along in `raw.comments`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_postTranscriptPost transcript.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "linkedin_postTranscript" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "linkedin_postTranscript" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "linkedin_postTranscript" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post transcript. Captions for a LinkedIn video post, as one text block plus timed cues, read from the caption track LinkedIn publishes with the video, its automatic captions included. A post without video, or a video without a caption track, returns an empty result, which is never charged. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_profilePerson's profile.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Person's profile. A LinkedIn member's public profile: name, headline, location, follower count, avatar, current employers and education. LinkedIn masks parts of a logged-out profile with asterisks; masked values are dropped rather than returned as `****`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkme_pageLinkMe page.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The description's first verb is "link": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "link": a word for a change.

      What this check looks for
    Description, as the server wrote it
    LinkMe page. Public LinkMe page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linktree_pageLinktree page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Linktree page. Public Linktree page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mastodon_postPost.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "mastodon_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "mastodon_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mastodon_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post. A single public Mastodon post with its favourite, reply and boost counts and attached media. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mastodon_profileProfile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile. A public Mastodon account, read from its own server: follower, following and post counts, bio, avatar, header image and profile links. Accounts that opted out of search engine indexing are refused, free. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mastodon_userPostsUser posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "mastodon_userPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "mastodon_userPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mastodon_userPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    User posts. An account's public posts, newest first, with favourite, reply and boost counts. Boosts of other people's posts are left out. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • milkshake_pageMilkshake page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Milkshake page. Public Milkshake page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mixcloud_followersUser followers.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    User followers. A user's followers, most recent first: username, display name and avatar. Counts are not part of this list; fetch a profile for them. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mixcloud_followingAccounts a user follows.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Accounts a user follows. Accounts a user follows, most recent first: username, display name and avatar. Counts are not part of this list; fetch a profile for them. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mixcloud_profileProfile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile. Public Mixcloud profile: followers, following, upload count, bio, avatar, cover image and location. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mixcloud_tagPopular uploads for a tag.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Popular uploads for a tag. A tag's popular uploads as Mixcloud ranks them, with plays, favourites, reposts and comments. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mixcloud_uploadUpload details.Reads text others write1 finding

    Why it is in this group

    • The name "mixcloud_upload" says "upload": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mixcloud_upload" says "upload": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Upload details. One Mixcloud upload: plays, favourites, reposts, comments, duration, tags and description. The tracklist, when the uploader published one, is in `raw.sections`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mixcloud_uploadCommentsUpload comments.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "mixcloud_uploadComments" says "upload": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "mixcloud_uploadComments" says "upload" and "comment": it writes something other people read.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mixcloud_uploadComments" says "upload": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Upload comments. Public comments on a Mixcloud upload. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • mixcloud_userUploadsUser uploads.Reads text others write1 finding

    Why it is in this group

    • The name "mixcloud_userUploads" says "upload": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mixcloud_userUploads" says "upload": a word for a change.

      What this check looks for
    Description, as the server wrote it
    User uploads. A user's public uploads, newest first, with plays, favourites, reposts and comments. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • odysee_channelChannel.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel. Public metadata for an Odysee channel: title, description, avatar, banner, subscriber count, number of videos, website and creation date. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • odysee_channelVideosChannel videos.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel videos. An Odysee channel's videos, newest first, 50 per page, with view and like counts. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • odysee_commentsVideo comments.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "odysee_comments" says "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "odysee_comments" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Video comments. Top-level comments on an Odysee video, 50 per page, with like and reply counts. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • odysee_videoVideo details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video details. Public metadata for an Odysee video: title, description, duration, tags, release date, channel, and view, like and comment counts. Dislikes are in `raw.dislikeCount`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • peertube_channelChannel profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel profile. Public profile of a PeerTube channel, read from the instance that hosts it: followers, following, video count, avatar, banner and creation date. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • peertube_channelVideosChannel videos.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel videos. A PeerTube channel's public videos, newest first, 50 per page. Tags are not included in list items; `peertube.video` returns them. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • peertube_commentsVideo comments.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "peertube_comments" says "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "peertube_comments" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Video comments. Top-level comments on a PeerTube video, newest first, 100 per page, including those posted from other fediverse servers. `replyCount` gives each thread's replies; `peertube.commentReplies` returns them. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • peertube_transcriptVideo transcript.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video transcript. A PeerTube video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the first track. `isAutoGenerated` says whether the instance transcribed it automatically. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • peertube_videoVideo details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video details. Public metadata for a PeerTube video: views, likes, comment count, duration, tags, publish date and channel. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • pillar_pagePillar page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Pillar page. Public Pillar page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • pinterest_boardBoard and its pins.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Board and its pins. Board metadata plus a page of its pins. Pass the `cursor` from the previous response to page through the board. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • pinterest_pinPin details.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "pinterest_pin" says "pin": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "pinterest_pin" says "pin": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Pin details. Public details for a pin: title, description, reactions, comments, shares and full-resolution media. The destination link and save count are in `raw`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • pinterest_userBoardsBoards owned by a user.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Boards owned by a user. Public boards on a profile, most recently pinned-to first, with pin and follower counts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_postPost details.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "reddit_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "reddit_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post details. One Reddit post with its score, comment count, body text and media. Use `reddit.postComments` for the comment tree. They are separate endpoints, so a post with no comments is still a paid, cached result rather than an empty one. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_postCommentsPost comments.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "reddit_postComments" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "reddit_postComments" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_postComments" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post comments. A post's comment tree, flattened into reading order with `parentId` preserved so callers can rebuild it. Returns the comments Reddit shows on the post's first page, with `raw.totalComments` giving the post's full count and `pagination.hasMore` true when more exist; `pagination.cursor` is null. Reddit collapses deep threads behind continuation stubs; fetch those with `reddit.commentReplies`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_postTranscriptVideo transcript.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "reddit_postTranscript" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "reddit_postTranscript" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_postTranscript" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Video transcript. Transcript for a Reddit-hosted video, from a direct v.redd.it URL, a post URL, or a post id. Reddit auto-captions much of its hosted video and publishes the result as a WebVTT file beside the video; this returns it as one text block plus timed cues, with the raw WebVTT in `raw.rawVtt`. English is the only caption language observed. Videos with no caption file return an empty result and are not charged. A caption track Reddit advertises only in segmented form, named by the playlist with no flat `.vtt` beside the video, is reported as `upstream_schema_drift` today and is likewise never charged. Covers Reddit-hosted video only. A post linking to YouTube or another site has no Reddit caption file and returns an empty result. A post URL or id is resolved to its video first, so a `v.redd.it` URL is one request quicker. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_subredditSubreddit posts.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Subreddit posts. Posts from a subreddit, sorted the way Reddit sorts them, with scores and comment counts. `sort=top` and `sort=controversial` accept a `timeframe`. `raw.posts` adds each post's subreddit, flair, post type and upvote ratio. `raw.via` names the surface that answered; when Reddit serves only its Atom feed (`atom`), scores and comment counts are null. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_subredditDetailsSubreddit details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Subreddit details. Public metadata for a subreddit: title, description, icon, banner, and where Reddit shows them, subscribers, people online now, creation date and whether it is private or restricted. `raw.via` names the surface: on `shreddit`, subscribers, creation date and privacy are null, and `raw.weeklyVisitors` and `raw.weeklyContributions` carry Reddit's weekly activity figures. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_userUser profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    User profile. A Reddit account's public profile: display name, description, avatar, account age, and karma (returned under `raw.karma`, since the unified schema has no karma field). Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reddit_userPostsUser posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "reddit_userPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "reddit_userPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_userPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    User posts. Posts submitted by a Reddit account, newest first by default. Falls back to the account's Atom feed when the JSON surface is blocked. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • redfin_agentReal estate agent profile.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Real estate agent profile. Public profile for a Redfin agent or partner agent: name, brokerage, contact and bio. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • redfin_forRentFor-rent property details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    For-rent property details. Public details for one Redfin rental: price (or starting price for a multi-unit building), specs, availability and amenities. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • redfin_forSaleFor-sale property details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    For-sale property details. Public details for one Redfin for-sale listing: price, specs, agent, price history and nearby schools. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • rumble_channelVideosChannel videos.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel videos. A Rumble channel's public uploads, newest first, 25 per page. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • rumble_commentsVideo comments.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "rumble_comments" says "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "rumble_comments" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Video comments. Public comments on a Rumble video, including replies. Rumble hides comments behind a login on some videos; when it does, this returns an unbilled empty result rather than logging in. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • rumble_transcriptVideo transcript.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video transcript. A Rumble video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the default track. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • rumble_videoVideo details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video details. Public metadata for a Rumble video: exact view count, likes and dislikes, comment count, duration, upload date, channel and follower count. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • snapchat_profileUser profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    User profile. Public Snapchat profile. Creator and business accounts return subscriber count, bio, website and avatar; personal accounts return the handle, display name and Bitmoji avatar, which is all Snapchat publishes for them. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • snapchat_spotlightSpotlight by link.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Spotlight by link. A public Snapchat Spotlight video: view, like, comment and share counts, caption and hashtags, duration, creator, thumbnail, media URL, and the auto-generated transcript when Snapchat has one. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • snapchat_spotlightCommentsSpotlight comments by link.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "snapchat_spotlightComments" says "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "snapchat_spotlightComments" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Spotlight comments by link. Public comments on a Snapchat Spotlight, ranked the way Snapchat ranks them, with reaction and threaded-reply counts. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • solo_pageSolo page.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Solo page. Public Solo page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • soundcloud_artistArtist profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Artist profile. Public SoundCloud profile: followers, following, track count, bio, avatar and header image. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • soundcloud_artistTracksArtist tracks.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Artist tracks. An artist's public uploads, newest first. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • soundcloud_trackTrack details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Track details. Public metadata for a SoundCloud track: plays, likes, reposts, comments, duration, genre and publisher metadata (ISRC, label, writers). Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • spotify_albumAlbum details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Album details. Public Spotify album: title, artist, release date, artwork and total runtime. The track listing, release type (album or single) and track count are in `raw`. Add `include_raw=true`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • spotify_artistArtist details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Artist details. Public Spotify artist: name, exact follower count, biography, artwork and external links. Monthly listeners and current top tracks with play counts are in `raw`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • spotify_playlistPlaylist contents.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Playlist contents. Public Spotify playlist: name, owner, description, cover art, total track count and its tracks, 50 per `cursor` page, up to the first 100. On a longer playlist the last page reports `hasMore` true with a null `cursor`: the remaining tracks exist but are not served. Costs 1 credit. Pass exactly one of `id` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • spotify_podcastPodcast details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Podcast details. A Spotify podcast: title, publisher, description, artwork and episode count, with its rating and topics in `raw`. Two fields carry something different here than they do elsewhere: `category` holds the show's publisher, and `postCount` is its episode count. The unified schema has no publisher field, and naming it here is better than leaving you to infer it. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • spotify_podcastEpisodesPodcast episodes.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Podcast episodes. Episodes for a Spotify podcast, newest first. Pass the `cursor` from the previous response to page. `hasMore` true with a null `cursor` means the show has more episodes than this response can page to. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • spotify_trackTrack details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Track details. Public Spotify track: title, artists, artwork, duration, release date and the preview clip URL. `viewCount` is the play count when the track is among its artist's top tracks, and null otherwise. The explicit-content label is in `raw`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • substack_commentsPost comments.Reads text others write1 finding

    Why it is in this group

    • The name "substack_comments" says "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "substack_comments" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post comments. Every public comment on a Substack post, replies included, newest first; `parentId` links a reply to its comment. Comments a publication shows only to paid subscribers are not available. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • substack_postPost.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "substack_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "substack_post" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "substack_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post. One Substack post with its text, reactions, comments, restacks and word count. For a subscriber-only post, `text` is the public preview and `truncated` is true. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • substack_postsPublication posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "substack_posts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "substack_posts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "substack_posts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Publication posts. A publication's posts, newest first, with reactions, comments, restacks and word count. Substack shows no view counts. Pass the `cursor` from the previous response to page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • substack_profileProfile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile. A Substack writer's public profile: followers, bio, links, and their main publication. Subscribers appear only as Substack's rounded badge. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • substack_publicationPublication.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Publication. A Substack publication: name, description, author, custom domain, whether it sells paid plans, and its rounded subscriber badge. Custom domains are accepted. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • telegram_channelChannel.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel. Public Telegram channel or group metadata including its name, description, avatar, verification status, subscriber or member count, and public media counters. The subscriber or member count is exact, read from the channel's t.me page, and falls back to the rounded preview value ("9.66M") when that page cannot be read. The media counters in `raw.counters` are Telegram's rounded display text. Uses Telegram's public web preview and does not use a logged-in Telegram account, so private channels, invite-only groups and user accounts are not covered. An old username still resolves to the channel that took it over, so `handle` here is the header username and may differ from the one inside a post id, so join on a post `id`, never on the handle. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • telegram_channelPostsChannel posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "telegram_channelPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "telegram_channelPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "telegram_channelPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Channel posts. One public web-preview page of Telegram posts with text, publish date, views, reactions when exposed, forwards, media (photos and the playable video file), and link previews. Twenty posts per page, newest first. Pass the returned cursor to fetch the previous page. Empty and terminal pages are not charged. `viewCount` is Telegram's own rounded display value ("1.37M" → 1370000), not an exact count; the original text is in `raw.messages[].viewsText`. `likeCount` totals every public reaction, paid stars included, from Telegram's rounded display values, and is null when a post shows no reactions. Each reaction, the forward source and the link preview are under `raw`. A post `id` carries the CANONICAL username of the channel, which differs from the one you asked for when an old username still resolves to it. Join on `id`, not on the handle you passed. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • telegram_postPost.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "telegram_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "telegram_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "telegram_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post. A single public Telegram post with its text, publish date, views, reactions when exposed, forward source, media (photos and the playable video file), and link preview. `viewCount` is Telegram's own rounded display value ("1.37M" → 1370000), not an exact count; the original text is in `raw.viewsText`. `likeCount` totals every public reaction, paid stars included, from Telegram's rounded display values, and is null when the post shows no reactions. Each reaction, the forward source and the link preview are under `raw`. Reads the public post embed and does not use a logged-in Telegram account. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • threads_postPost.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "threads_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "threads_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "threads_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post. A single public Threads post with like count, reply count, and any attached media. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • threads_profileProfile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile. Public Threads profile: follower count, bio, bio links, avatar, and verification status. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • threads_userPostsUser posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "threads_userPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "threads_userPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "threads_userPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    User posts. Public posts from a Threads profile in the order the profile shows them, with like, reply and repost counts. Pass `pagination.cursor` back as `cursor` for the next page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_adLibraryAdOne TikTok ad.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One TikTok ad. One TikTok ad by id or URL. Two public surfaces carry ads and an id alone does not say which: Creative Center Top Ads (ads.tiktok.com) is checked first, then the Commercial Content Library (library.tiktok.com). Pass a URL from either and only that source is queried. Both return the same `Ad` shape; fields a source does not publish are null rather than inferred - Top Ads carries no flight dates or advertiser entity, and the library carries no performance metrics. `countries` here is the ad's own targeting, unlike a search result's, where it is the market that was searched. An id neither source knows is a 404; an id that only one source could be asked about is not, because a source that did not answer has not said no. Reach bands stay in `raw`, not in the impressions fields, because reach is not impressions. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_collectionVideosCollection videos.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Collection videos. Videos in a public TikTok collection, a creator-curated playlist of other people's posts as well as their own. Costs 1 credit. Pass either `url` or `collection_id`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_commentsComments on a video.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "tiktok_comments" says "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "tiktok_comments" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Comments on a video. Top-level comments on a TikTok, with like counts, reply counts, pinned status and a flag for the creator's own replies. Use `tiktok.commentReplies` to expand a thread. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_followersAccounts following a creator.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Accounts following a creator. The public follower list for a TikTok account, newest first. TikTok caps how deep this list can be walked regardless of paging. Requires a configured TikTok signer. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_hashtagHashtag details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Hashtag details. Stats for a TikTok hashtag: total videos and total views, plus its description and cover. Read straight off the tag page, so it needs no signer. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_hashtagVideosVideos using a hashtag.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Videos using a hashtag. TikToks carrying a given hashtag, in TikTok's own feed order, with a cursor for the next page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_liveLive stream info.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Live stream info. Details of a creator's stream while they are live: room id, title, cover, current viewers and start time. A creator who is not live returns `empty_result`, a real answer that costs nothing, so this works as a cheap "are they live?" poll. Pass `room_id` (from a previous response's `roomId`) to look the room up directly on TikTok's own webcast surface. No third-party provider is involved. On the `room_id` path `handle` may come back empty if the webcast payload omits the room owner. Costs 1 credit. Pass either `handle` or `room_id`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_playlistsA creator's playlists.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    A creator's playlists. The playlists (TikTok calls them "mixes") a creator has organised their videos into. Pair with `tiktok.playlistVideos` to walk one. Requires a configured TikTok signer. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_playlistVideosVideos in a playlist.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Videos in a playlist. The videos inside one TikTok playlist, in the creator's chosen order. Requires a configured TikTok signer. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_popularCreatorsPopular creators.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Popular creators. Creators trending in a market, from TikTok's own Creative Center leaderboard. Filter by country, follower band and category. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_popularSongsPopular songs.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Popular songs. Sounds trending in a market, the endpoint behind music A&R and sync-licensing research. From TikTok's Creative Center. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_popularVideosPopular videos.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Popular videos. Videos trending in a market over a trailing window, from TikTok's Creative Center. Distinct from `/v1/tiktok/trending`, which is the personalised For You feed. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_productProduct details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Product details. A single TikTok Shop product: title, description, images, price and original price, rating, review and sales counts, stock, category and the seller. `price` is the lowest-priced variant; it is null when TikTok hides the digits from logged-out visitors. Catalogues are per market: `region` picks one, default US. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_productReviewsProduct reviews.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Product reviews. The reviews a TikTok Shop product page shows, with star rating, reviewer, photos and the purchased variant. That is the page's first screen, not every review. `region` picks the market, default US. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_profileProfile details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile details. Public profile for a TikTok account: followers, following, video count, bio, bio link, verification and account region. Private accounts return their public shell with `isPrivate: true` rather than an error. That is a real answer, not a failure. Total likes received (TikTok's "hearts") is in `raw`, since it is a like total rather than the lifetime view count `viewCount` means elsewhere in the schema. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_profileRegionCreator region.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Creator region. The market TikTok assigns a creator's account. Read from TikTok's own `region` field: on the profile where TikTok publishes one, otherwise from the region stamped on the creator's recent posts. Never inferred from language, timezone or content. Costs 1 credit. Pass either `handle` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_shopProductsSeller's product catalogue.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Seller's product catalogue. The products a TikTok Shop store lists, page by page, with price, rating, review and sales counts. Pass the store's URL (tiktok.com/shop/store/<name>/<seller_id>). `region` picks the market, default US. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_songSound / song details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Sound / song details. Details for a TikTok sound: title, artist, album, cover, clip length, and how many videos use it. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_songVideosVideos using a sound.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Videos using a sound. TikToks built on a given sound: the endpoint behind "who is using my track", with a cursor for the next page. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_transcriptVideo transcript.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video transcript. The spoken transcript of a TikTok, as one text block plus timed cues. Returns the ORIGINAL spoken-language track by default rather than whichever track TikTok lists first, so the text reflects what was actually said. Pass `language` for a specific track. A miss is an error listing what is available, never a silent substitution into another language. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_userShowcaseCreator's product showcase.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Creator's product showcase. Products a creator has pinned to their profile showcase. This is what they are actually promoting, as opposed to what they sell. Requires a configured TikTok signer. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_userVideosVideos posted by a creator.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Videos posted by a creator. A creator's public posts, newest first, with view/like/comment/share counts. Photo posts are included and typed as `image` or `carousel`. Up to 15 per page, with a cursor for older posts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_videoVideo or photo-post details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video or photo-post details. Full public metadata for one TikTok: caption, hashtags, mentions, author, sound, duration, and view/like/comment/share counts. Photo posts return every image in `mediaUrls`. Accepts a full URL, a share link (vm.tiktok.com), or a numeric video id. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • truthsocial_postPost.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "truthsocial_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "truthsocial_post" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "truthsocial_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post. A single public Truth with its engagement counts and attached media. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • truthsocial_profileProfile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile. Public Truth Social profile: follower and following counts, Truth count, bio, avatar, header image, and verification status. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • truthsocial_userPostsUser posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "truthsocial_userPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "truthsocial_userPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "truthsocial_userPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    User posts. Recent public Truths from an account, newest first, with favourite, reply and ReTruth counts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitch_clipClip details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Clip details. Public metadata for a Twitch clip: views, duration, creator, broadcaster, category, and the offset into the source VOD. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitch_profileChannel profile.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel profile. Public Twitch channel: followers, partner/affiliate status, bio, avatar, banner, account age, and whether the channel is live right now. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitch_userScheduleStream schedule.Reads text others write1 finding

    Why it is in this group

    • The name "twitch_userSchedule" says "schedule": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "twitch_userSchedule" says "schedule": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Stream schedule. A channel's published schedule for the current week, plus the next upcoming segment. Segments are returned as posts of type `live` whose `publishedAt` is the scheduled start time. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitch_userVideosChannel videos.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel videos. A channel's public VODs, highlights or uploads. Returns up to 100 per call, because Twitch gates deeper pages behind a browser integrity challenge and we do not run browser sessions. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitter_communityCommunity details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Community details. Public details for an X Community: name, description, member count, topic, join policy, banner and the creator's handle. Read from the server-rendered community page, which X still serves to logged-out callers. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitter_communityTweetsCommunity posts.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Community posts. Recent posts in an X Community, with likes, retweets, replies and **view counts**. The community page publishes metrics X's embed CDN does not. One page only: X serves logged-out callers a single rendered batch and no continuation token, so `hasMore` is always false. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitter_profileProfile details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Profile details. Public profile for an X account: bio, location, avatar, banner, website, exact follower, following and post counts, join date and verified badge. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitter_tweetPost details.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The description's first verb is "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe description's first verb is "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post details. One public post with its text, media and engagement. Served from X's embed CDN, which is the most durable logged-out surface X still operates; with TWITTER_BEARER_TOKEN set it uses the official API instead and adds retweet, quote and impression counts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitter_tweetTranscriptPost transcript.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The description's first verb is "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe description's first verb is "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Post transcript. Captions for a video post on X, as one text block plus timed cues. Sourced from the caption track in the video's HLS playlist, which is the only transcript X exposes to logged-out callers. Posts whose author never attached captions return an empty result and are not charged. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • twitter_userTweetsRecent posts from an account.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Recent posts from an account. An account's public posts with media, likes, replies and retweets. With TWITTER_BEARER_TOKEN this pages through the timeline; without one it returns the single page X's embedded timeline exposes, a selection of the account's posts rather than the latest, or the pinned post and latest few from the profile page when that timeline is unavailable. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • walmart_productWalmart product details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Walmart product details. Public details for a Walmart listing: title, price, availability, seller, ratings, images and specifications, read from the page's own __NEXT_DATA__ payload. Costs 3 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • walmart_reviewsWalmart product reviews.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Walmart product reviews. Paginated customer reviews for a Walmart product, from its dedicated reviews page. Costs 3 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_channelChannel details.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel details. Public details for a YouTube channel: subscribers, video count, description, links. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_channelCommunityPostsChannel community posts.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "youtube_channelCommunityPosts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "youtube_channelCommunityPosts" says "post": it sends or publishes something to other people.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_channelCommunityPosts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Channel community posts. A channel's Posts tab (what YouTube used to call Community). Images, multi-image carousels, shared videos and polls all come back as posts; poll options are under `raw`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_channelLivesChannel live streams.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel live streams. A channel's Live tab: streams that are live now, scheduled, or finished and still on the tab. `viewCount` is concurrent viewers while a stream is live and total views once it ends. YouTube swaps the label, and we surface whichever it gave us. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_channelPlaylistsChannel playlists.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel playlists. Playlists a channel has made public. Pass an `id` from here to /v1/youtube/playlist for the videos in it. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_channelShortsChannel shorts.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel shorts. A channel's Shorts grid, newest first, about 48 per page. Shorts carry no duration or publish date on this surface, because YouTube does not render either, so both are null rather than guessed. With `extra_fetch=true`, each Short is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_channelVideosChannel videos.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Channel videos. Recent public uploads for a channel. Use `tab` to switch between videos and shorts. With `extra_fetch=true`, each item is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_communityPostCommunity post details.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "youtube_communityPost" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "youtube_communityPost" says "post": it sends or publishes something to other people.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_communityPost" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Community post details. One community post by id or permalink, with its full text, attachments, like count and exact comment count. Poll questions and options are under `raw`. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_playlistPlaylist contents.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Playlist contents. The videos in a public playlist, in playlist order, 100 per page. Playlist metadata (title, description, owner) comes back alongside the items. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_transcriptVideo transcript.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video transcript. Full transcript for a YouTube video, as one text block plus timed cues. Returns the requested language when available, otherwise the default track. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_trendingShortsTrending shorts.Reads text others writeNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Trending shorts. Shorts YouTube is currently surfacing, by region. Note that YouTube retired the global Trending feed (/feed/trending now serves the ordinary home feed), so this reads the ranked Shorts surface instead, which is what still exists. Results differ per request; it is deliberately not subscribable. With `extra_fetch=true`, each Short is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_videoVideo or Short details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video or Short details. Public metadata for a YouTube video or Short, including view/like counts. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_videoCommentsVideo comments.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "youtube_videoComments" says "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_videoComments" says "comment": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Video comments. Top-level comments on a video, about 20 per page. Pass `pagination.cursor` back as `cursor` for the next page. Each item that has replies also appears in `replyCursors`; feed that cursor to `/v1/youtube/video/comment-replies`. Use `order=newest` when polling for new comments, since `top` is re-ranked by YouTube and will churn. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_videoSponsorsVideo sponsors (inferred).Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Video sponsors (inferred). Brands, promo codes and affiliate links inferred from a video's description, plus YouTube's own paid-promotion disclosure. Every signal carries the description line it was read from and a confidence, because this is inference over prose. YouTube publishes no structured sponsor data. Experimental: expect to check `evidence` before acting on `low` confidence. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • zillow_agentZillow agent profile.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Zillow agent profile. Public Zillow agent/team profile: brokerage, license, rating and review count, where published. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • zillow_propertyZillow listing details.Reads text others writeCan send data outNo 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.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Zillow listing details. Public details for a Zillow listing: price, status, beds/baths, area, address and an inline photo set. Costs 1 credit. Pass either `zpid` or `url`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
Only reads 42Show 42 read-only tools
  • facebook_adLibraryAdvertisersFind advertisers running ads.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Find advertisers running ads. Distinct advertisers whose ads match a search term, with the `page_id` needed by /v1/facebook/ad-library/page-ads. Derived from the ads an Ad Library search returns, ranked by how many of them each advertiser ran. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_adLibrarySearchSearch the Meta Ad Library.Reads text others writeNo findings

    Why it is in this group

    • The name "facebook_adLibrarySearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search the Meta Ad Library. Facebook, Instagram, Messenger and Threads ads matching a search term, from Meta's Ad Library, in the Library's own order. Spend and impression ranges are filled for political and issue ads only where the deployment reads the Graph Ad Library API; `pagination.hasMore` says when more results exist. Costs 2 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_cityEventsGet the events of a city.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    Get the events of a city. Public events Facebook is suggesting for a city, from its Events Explore feed (e.g. https://www.facebook.com/events/explore/saint-petersburg-florida/111326725552547). `time` narrows the window to today, this week, or next week; without it Facebook returns whatever it has queued as upcoming, in whatever order it ranks them. Only the first, server-rendered page: host and description are not exposed on this listing (only on /v1/facebook/event). `pagination.hasMore` says whether Facebook has more; this endpoint returns no cursor to fetch them. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_eventsSearchSearch public events.Reads text others writeNo findings

    Why it is in this group

    • The name "facebook_eventsSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search public events. Public Facebook events matching a search term. Results are ranked and biased toward where Facebook places the request, so the same query can return a different set on another call. Treat this as discovery, not as an enumerable list. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_marketplaceLocationsFind a Marketplace location.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Find a Marketplace location. Resolve a place name to the Marketplace location ids /v1/facebook/marketplace/search accepts, plus the neighbouring locations Facebook offers around it. Marketplace is city-scoped, so this is how you search a city you are not sitting in. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • facebook_marketplaceSearchSearch Marketplace listings.Reads text others writeNo findings

    Why it is in this group

    • The name "facebook_marketplaceSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search Marketplace listings. Public Facebook Marketplace listings matching a search term, with price, condition flags, location and photos. `location` takes a city slug or a location id from /v1/facebook/marketplace/locations; without one, Facebook picks the city it places the request in, which you do not control. Pass `location` for results you can repeat. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • google_adLibraryAdvertisersFind advertisers in the Ads Transparency Centre.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Find advertisers in the Ads Transparency Centre. Advertisers matching a name, with the advertiser id that /v1/google/ad-library/advertiser-ads needs, plus the verified domains Google suggests for the same term in `domains`. Without `region` every region is searched. `postCount` and `adCountUpper` are the lower and upper bounds of the ad-count range the archive publishes, counted within `region` when one is given. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • google_mapsSearchGoogle Maps place search.Reads text others writeNo findings

    Why it is in this group

    • The name "google_mapsSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Google Maps place search. Business listings near a coordinate: name, address, phone, rating and hours. Google Maps requires JavaScript to render its result list; an unrendered response returns `upstream_blocked` and is not charged, rather than a silent empty success. Costs 5 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • identity_findSocialProfilesFind a creator's other social profiles.Reads text others write1 finding

    Why it is in this group

    • The name "identity_findSocialProfiles" says "find": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Info

      The description is 2,539 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "..."no other accounts" would then be a fact we did not establish. Costs 10 credits."

      What this check looks for
    Description, as the server wrote it
    Find a creator's other social profiles. Starts from one public profile and reports the other accounts that profile can be shown to own: profiles it links to directly, profiles reached through a recognised link-in-bio page (Linktree, Komi, Pillar, Lnk.Bio, LinkMe), and same-handle accounts on the other supported platforms that link back to the source or share a website only the owner controls. Covers Instagram, TikTok, YouTube, X and Facebook. A same-handle account with no corroboration is reported under `candidates`, never as a profile: the handle matching is a fact handed over, not a claim. There is no search-engine discovery and no display-name matching; neither is evidence of ownership. Every result carries the evidence type it rests on. Each entry in `failures` carries the inner error’s `code` and `message`, so "we checked and found nothing" (`upstream_not_found`, `empty_result`) stays distinguishable from "we could not check" (`upstream_blocked`, `not_configured`); only the second kind sets `partial`. Not covered: any platform outside the five, and links a creator has not published. An X/Twitter source can only be resolved by same-handle probing, because X exposes no bio links at all to a logged-out caller. The 20-second budget stops the composite scheduling new inner fetches; it does not abort one already in flight, so a slow leg is reported as a timeout while its request finishes unread. Link-in-bio expansion is verified against fixtures only, because no channel sampled live from our network published a link-in-bio URL to expand. A `partial: true` answer is cached for the same seven days as a complete one, so pass `cache_max_age=0` to refetch after a transient block rather than being served the gap for a week. Pricing is per source checked: the 10 credits buy the legs this call runs (the starting profile, each link-in-bio page expanded, and each same-handle probe), and a leg listed in `unchecked` is not charged for, so a partial answer costs `ceil(10 x legs answered / legs attempted)` and never more than 10. **Any response with an empty `profiles` AND an empty `candidates` costs nothing at all**, whatever `unchecked` says: an answer carrying no account has delivered nothing to charge for, and the `unchecked` disclosure ships free. When every leg was checked and none carries another account that free answer is an `empty_result`; when nothing beyond the starting profile could be checked it is an error, because "no other accounts" would then be a fact we did not establish. Costs 10 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_popularSearchTop posts for a keyword.Reads text others writeNo findings

    Why it is in this group

    • The name "instagram_popularSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "post": it reads posts, which other people can write.
    Description, as the server wrote it
    Top posts for a keyword. Top posts for a keyword from Instagram's public Popular page for it, the page at instagram.com/popular/<keyword>/: reels, images and carousels together, in Instagram's order. One page; `hasMore` says whether Instagram holds more than it shows. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_profileSearchSearch accounts.Reads text others writeNo findings

    Why it is in this group

    • The name "instagram_profileSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search accounts. Accounts matching a query, as unified Creators. The follower counts on a search result are Instagram's own summary and are thinner than /v1/instagram/profile. Fetch that for one account you care about. One page only; this surface has no cursor. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • instagram_reelsSearchSearch reels by keyword.Reads text others writeNo findings

    Why it is in this group

    • The name "instagram_reelsSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search reels by keyword. Reels matching a keyword, from Instagram's own keyword search rather than its hashtag index. The two return genuinely different sets, so this never quietly substitutes one for the other. Results are whatever Instagram ranked for the query at that moment. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_adsSearchSearch ads.Reads text others writeNo findings

    Why it is in this group

    • The name "linkedin_adsSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search ads. Search LinkedIn's public Ad Library by advertiser or keyword. Pass `company` (a company page slug or numeric id) to list one advertiser's ads, `keyword` to search copy, or both. Returns the first page LinkedIn server-renders, about 25 ads; the total number of matches is in `raw.totalMatches`. Costs 1 credit. Pass `company`, `keyword`, or both. The Ad Library will not return an unfiltered archive.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • linkedin_searchPostsSearch posts.Reads text others writeNo findings

    Why it is in this group

    • The name "linkedin_searchPosts" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "linkedin_searchPosts" says "search" and "post": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "search" and "post": it reads posts, which other people can write.
    Description, as the server wrote it
    Search posts. Keyword search over LinkedIn posts. LinkedIn gates content search behind sign-in for every logged-out caller (/search/results/content/ redirects to /uas/login regardless of origin IP), and we do not scrape authenticated sessions, so this endpoint reports the gate rather than pretending to be broken. It is shipped so callers get one clear, unbilled answer instead of a 404 on a documented route. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • list_watchesThis team's watches, including paused ones.No findings

    Why it is in this group

    • The name "list_watches" says "list": a word for reading.
    Description, as the server wrote it
    This team's watches, including paused ones. Free.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • threads_searchUsersSearch users.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "threads_searchUsers" says "search": a word for reading.

    What it can reach

    • private-dataThe name "threads_searchUsers" says "search" and "thread": it reads messages.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "threads_searchUsers" says "search" and "thread": it reads messages, which other people can write.
    Description, as the server wrote it
    Search users. Public Threads accounts matching a keyword. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_adLibrarySearchSearch the TikTok Ads Library.Reads text others writeNo findings

    Why it is in this group

    • The name "tiktok_adLibrarySearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search the TikTok Ads Library. Ads in TikTok's public Commercial Content Library, by keyword (`query`) or by advertiser (`advertiser_name`). An advertiser name is resolved through TikTok's own typeahead first, then searched as an entity, so it matches the registered legal name ("NIKE Retail B.V.") rather than a brand. Results are NOT global: TikTok publishes this archive per market and refuses a search without one, so `region` is required, validated against the market list the library itself publishes rather than a fixed list here, and every result ran in that market, which is what each ad's `countries` reports. TikTok returns its own relevance ranking; we ask for the most recently shown first, but that is only a tiebreak within it, so results are not ordered by date. Cursor-paginated 12 at a time, each ad carrying its public library.tiktok.com detail URL. Pages are not guaranteed disjoint: the archive re-ranks live, so an ad can repeat across pages. Political and election ads are outside the archive. Reach is published as a band and is not impressions, so it stays in `raw.estimated_audience` rather than the impressions fields. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_searchSuggestionsSearch suggestions.Reads text others writeNo findings

    Why it is in this group

    • The name "tiktok_searchSuggestions" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search suggestions. TikTok's typeahead completions for a partial query: what the platform thinks people are looking for. Useful for keyword research. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tiktok_shopSearchSearch TikTok Shop.Reads text others writeNo findings

    Why it is in this group

    • The name "tiktok_shopSearch" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search TikTok Shop. The products TikTok Shop search returns for a query, page by page, with price, rating, review and sales counts. US market. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • walmart_categoryBrowse a Walmart category.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Browse a Walmart category. Public Walmart category listing: the same shape as `walmart.search`, keyed by category id instead of a query. Costs 3 credits.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_searchHashtagSearch by hashtag.Reads text others writeNo findings

    Why it is in this group

    • The name "youtube_searchHashtag" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search by hashtag. Videos or Shorts carrying a hashtag, as YouTube ranks them on the hashtag landing page. `type=shorts` switches to the Shorts tab, which is a different result set rather than a filter over the same one. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • youtube_searchTypeaheadSearch typeahead.Reads text others writeNo findings

    Why it is in this group

    • The name "youtube_searchTypeahead" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search typeahead. YouTube's own search suggestions for a partial query, the autocomplete list the search box shows. Useful as a keyword-research signal: these are ranked by what people actually search for. Costs 1 credit.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: 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.

60480 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 private-data tools breaks every one.

Reads private data2
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write252
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out120
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__truescrape__threads_search",
      "mcp__truescrape__threads_searchUsers"
    ]
  }
}

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

Findings

Matches of fixed checks, with the text they matched.

57 warn2 info
  • The server marks "bluesky_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "bluesky_post" says "post": a word for a change.

    What this check looks for
  • The server marks "bluesky_userPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "bluesky_userPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "facebook_commentReplies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_commentReplies" says "comment": a word for a change.

    What this check looks for
  • The server marks "facebook_groupPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_groupPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "facebook_pagePosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_pagePosts" says "post": a word for a change.

    What this check looks for
  • The server marks "facebook_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_post" says "post": a word for a change.

    What this check looks for
Show 53 more findings
  • The server marks "facebook_postComments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_postComments" says "post": a word for a change.

    What this check looks for
  • The server marks "facebook_postTranscript" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "facebook_postTranscript" says "post": a word for a change.

    What this check looks for
  • The server marks "github_pullRequests" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "github_pullRequests" says "request": a word for a change.

    What this check looks for
  • The server marks "instagram_commentReplies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_commentReplies" says "comment": a word for a change.

    What this check looks for
  • The server marks "instagram_hashtagPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_hashtagPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "instagram_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_post" says "post": a word for a change.

    What this check looks for
  • The server marks "instagram_postComments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_postComments" says "post": a word for a change.

    What this check looks for
  • The server marks "instagram_profilePostCount" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_profilePostCount" says "post": a word for a change.

    What this check looks for
  • The server marks "instagram_userPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_userPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "instagram_userTaggedPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "instagram_userTaggedPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "kwai_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "kwai_post" says "post": a word for a change.

    What this check looks for
  • The server marks "kwai_userPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "kwai_userPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "linkedin_companyPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "linkedin_companyPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "linkedin_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "linkedin_post" says "post": a word for a change.

    What this check looks for
  • The server marks "linkedin_postTranscript" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "linkedin_postTranscript" says "post": a word for a change.

    What this check looks for
  • The server marks "linkme_page" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "link": a word for a change.

    What this check looks for
  • The server marks "mastodon_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mastodon_post" says "post": a word for a change.

    What this check looks for
  • The server marks "mastodon_postReplies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mastodon_postReplies" says "post": a word for a change.

    What this check looks for
  • The server marks "mastodon_userPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mastodon_userPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "mixcloud_upload" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mixcloud_upload" says "upload": a word for a change.

    What this check looks for
  • The server marks "mixcloud_uploadComments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mixcloud_uploadComments" says "upload": a word for a change.

    What this check looks for
  • The server marks "mixcloud_userUploads" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "mixcloud_userUploads" says "upload": a word for a change.

    What this check looks for
  • The server marks "odysee_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "odysee_comments" says "comment": a word for a change.

    What this check looks for
  • The server marks "peertube_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "peertube_comments" says "comment": a word for a change.

    What this check looks for
  • The server marks "peertube_commentReplies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "peertube_commentReplies" says "comment": a word for a change.

    What this check looks for
  • The server marks "pinterest_pin" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "pinterest_pin" says "pin": a word for a change.

    What this check looks for
  • The server marks "reddit_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_post" says "post": a word for a change.

    What this check looks for
  • The server marks "reddit_commentReplies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_commentReplies" says "comment": a word for a change.

    What this check looks for
  • The server marks "reddit_postComments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_postComments" says "post": a word for a change.

    What this check looks for
  • The server marks "reddit_postTranscript" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_postTranscript" says "post": a word for a change.

    What this check looks for
  • The server marks "reddit_userPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "reddit_userPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "rumble_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "rumble_comments" says "comment": a word for a change.

    What this check looks for
  • The server marks "snapchat_spotlightComments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "snapchat_spotlightComments" says "comment": a word for a change.

    What this check looks for
  • The server marks "substack_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "substack_comments" says "comment": a word for a change.

    What this check looks for
  • The server marks "substack_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "substack_post" says "post": a word for a change.

    What this check looks for
  • The server marks "substack_posts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "substack_posts" says "post": a word for a change.

    What this check looks for
  • The server marks "telegram_channelPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "telegram_channelPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "telegram_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "telegram_post" says "post": a word for a change.

    What this check looks for
  • The server marks "threads_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "threads_post" says "post": a word for a change.

    What this check looks for
  • The server marks "threads_userPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "threads_userPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "tiktok_commentReplies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "tiktok_commentReplies" says "comment": a word for a change.

    What this check looks for
  • The server marks "tiktok_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "tiktok_comments" says "comment": a word for a change.

    What this check looks for
  • The server marks "truthsocial_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "truthsocial_post" says "post": a word for a change.

    What this check looks for
  • The server marks "truthsocial_userPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "truthsocial_userPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "twitch_userSchedule" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "twitch_userSchedule" says "schedule": a word for a change.

    What this check looks for
  • The server marks "twitter_tweet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "post": a word for a change.

    What this check looks for
  • The server marks "twitter_tweetTranscript" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "post": a word for a change.

    What this check looks for
  • The server marks "youtube_channelCommunityPosts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_channelCommunityPosts" says "post": a word for a change.

    What this check looks for
  • The server marks "youtube_communityPost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_communityPost" says "post": a word for a change.

    What this check looks for
  • The server marks "youtube_commentReplies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_commentReplies" says "comment": a word for a change.

    What this check looks for
  • The server marks "youtube_videoComments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "youtube_videoComments" says "comment": a word for a change.

    What this check looks for
  • The description is 2,539 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "..."no other accounts" would then be a fact we did not establish. Costs 10 credits."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...ial Web API, so this endpoint needs app credentials; everything else on this platform is ke..."

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

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

claude mcp add --transport http truescrape https://api.truescrape.com/mcp --header 'x-api-key: <your-x-api-key>'
claude mcp add --transport http truescrape https://api.truescrape.com/mcp --header 'x-api-key: <your-x-api-key>'

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__truescrape__amazon_search",
      "mcp__truescrape__appleMusic_search",
      "mcp__truescrape__bitchute_search",
      "mcp__truescrape__dailymotion_search",
      "mcp__truescrape__deezer_search",
      "mcp__truescrape__ebay_search",
      "mcp__truescrape__facebook_adLibraryAdvertisers",
      "mcp__truescrape__facebook_adLibrarySearch",
      "mcp__truescrape__facebook_eventsSearch",
      "mcp__truescrape__facebook_marketplaceLocations",
      "mcp__truescrape__facebook_marketplaceSearch",
      "mcp__truescrape__identity_findSocialProfiles",
      "mcp__truescrape__google_adLibraryAdvertisers",
      "mcp__truescrape__google_mapsSearch",
      "mcp__truescrape__google_search",
      "mcp__truescrape__instagram_popularSearch",
      "mcp__truescrape__instagram_profileSearch",
      "mcp__truescrape__instagram_reelsSearch",
      "mcp__truescrape__instagram_search",
      "mcp__truescrape__linkedin_adsSearch",
      "mcp__truescrape__linkedin_searchPosts",
      "mcp__truescrape__mixcloud_search",
      "mcp__truescrape__odysee_search",
      "mcp__truescrape__peertube_search",
      "mcp__truescrape__pinterest_search",
      "mcp__truescrape__reddit_search",
      "mcp__truescrape__rumble_search",
      "mcp__truescrape__spotify_search",
      "mcp__truescrape__threads_search",
      "mcp__truescrape__threads_searchUsers",
      "mcp__truescrape__tiktok_adLibrarySearch",
      "mcp__truescrape__tiktok_searchSuggestions",
      "mcp__truescrape__tiktok_shopSearch",
      "mcp__truescrape__walmart_category",
      "mcp__truescrape__walmart_search",
      "mcp__truescrape__youtube_search",
      "mcp__truescrape__youtube_searchHashtag",
      "mcp__truescrape__youtube_searchTypeahead",
      "mcp__truescrape__list_watches"
    ],
    "ask": [
      "mcp__truescrape__amazon_offers",
      "mcp__truescrape__amazon_product",
      "mcp__truescrape__amazon_shop",
      "mcp__truescrape__appleMusic_album",
      "mcp__truescrape__appleMusic_artist",
      "mcp__truescrape__appleMusic_track",
      "mcp__truescrape__bitchute_channel",
      "mcp__truescrape__bitchute_channelVideos",
      "mcp__truescrape__bitchute_video",
      "mcp__truescrape__bluesky_post",
      "mcp__truescrape__bluesky_profile",
      "mcp__truescrape__bluesky_userPosts",
      "mcp__truescrape__dailymotion_channel",
      "mcp__truescrape__dailymotion_channelVideos",
      "mcp__truescrape__dailymotion_video",
      "mcp__truescrape__dailymotion_transcript",
      "mcp__truescrape__deezer_album",
      "mcp__truescrape__deezer_artist",
      "mcp__truescrape__deezer_artistAlbums",
      "mcp__truescrape__deezer_artistTopTracks",
      "mcp__truescrape__deezer_charts",
      "mcp__truescrape__deezer_playlist",
      "mcp__truescrape__deezer_podcast",
      "mcp__truescrape__deezer_podcastEpisodes",
      "mcp__truescrape__deezer_track",
      "mcp__truescrape__deezer_userPlaylists",
      "mcp__truescrape__inference_ageGender",
      "mcp__truescrape__ebay_product",
      "mcp__truescrape__facebook_ad",
      "mcp__truescrape__facebook_adTranscript",
      "mcp__truescrape__facebook_pageAds",
      "mcp__truescrape__facebook_cityEvents",
      "mcp__truescrape__facebook_commentReplies",
      "mcp__truescrape__facebook_event",
      "mcp__truescrape__facebook_group",
      "mcp__truescrape__facebook_groupPosts",
      "mcp__truescrape__facebook_marketplaceItem",
      "mcp__truescrape__facebook_pagePosts",
      "mcp__truescrape__facebook_pageReels",
      "mcp__truescrape__facebook_post",
      "mcp__truescrape__facebook_postComments",
      "mcp__truescrape__facebook_postTranscript",
      "mcp__truescrape__facebook_profile",
      "mcp__truescrape__facebook_profileEvents",
      "mcp__truescrape__facebook_profilePhotos",
      "mcp__truescrape__github_repository",
      "mcp__truescrape__github_trendingDevelopers",
      "mcp__truescrape__github_trendingRepositories",
      "mcp__truescrape__github_user",
      "mcp__truescrape__github_activity",
      "mcp__truescrape__github_contributions",
      "mcp__truescrape__github_followers",
      "mcp__truescrape__github_following",
      "mcp__truescrape__github_pullRequests",
      "mcp__truescrape__github_userRepositories",
      "mcp__truescrape__google_ad",
      "mcp__truescrape__google_advertiserAds",
      "mcp__truescrape__google_jobs",
      "mcp__truescrape__google_news",
      "mcp__truescrape__google_shopping",
      "mcp__truescrape__instagram_audioReels",
      "mcp__truescrape__instagram_commentReplies",
      "mcp__truescrape__instagram_hashtagPosts",
      "mcp__truescrape__instagram_highlight",
      "mcp__truescrape__instagram_post",
      "mcp__truescrape__instagram_postComments",
      "mcp__truescrape__instagram_profile",
      "mcp__truescrape__instagram_profilePostCount",
      "mcp__truescrape__instagram_transcript",
      "mcp__truescrape__instagram_trendingReels",
      "mcp__truescrape__instagram_userEmbed",
      "mcp__truescrape__instagram_userHighlights",
      "mcp__truescrape__instagram_userPosts",
      "mcp__truescrape__instagram_userReels",
      "mcp__truescrape__instagram_userTaggedPosts",
      "mcp__truescrape__kick_clip",
      "mcp__truescrape__komi_page",
      "mcp__truescrape__kwai_post",
      "mcp__truescrape__kwai_profile",
      "mcp__truescrape__kwai_userPosts",
      "mcp__truescrape__linkbio_page",
      "mcp__truescrape__linkedin_ad",
      "mcp__truescrape__linkedin_company",
      "mcp__truescrape__linkedin_companyPosts",
      "mcp__truescrape__linkedin_post",
      "mcp__truescrape__linkedin_postTranscript",
      "mcp__truescrape__linkedin_profile",
      "mcp__truescrape__linkme_page",
      "mcp__truescrape__linktree_page",
      "mcp__truescrape__mastodon_post",
      "mcp__truescrape__mastodon_postReplies",
      "mcp__truescrape__mastodon_profile",
      "mcp__truescrape__mastodon_userPosts",
      "mcp__truescrape__milkshake_page",
      "mcp__truescrape__mixcloud_profile",
      "mcp__truescrape__mixcloud_tag",
      "mcp__truescrape__mixcloud_upload",
      "mcp__truescrape__mixcloud_uploadComments",
      "mcp__truescrape__mixcloud_followers",
      "mcp__truescrape__mixcloud_following",
      "mcp__truescrape__mixcloud_userUploads",
      "mcp__truescrape__odysee_channel",
      "mcp__truescrape__odysee_channelVideos",
      "mcp__truescrape__odysee_video",
      "mcp__truescrape__odysee_comments",
      "mcp__truescrape__peertube_channel",
      "mcp__truescrape__peertube_channelVideos",
      "mcp__truescrape__peertube_video",
      "mcp__truescrape__peertube_comments",
      "mcp__truescrape__peertube_commentReplies",
      "mcp__truescrape__peertube_transcript",
      "mcp__truescrape__pillar_page",
      "mcp__truescrape__pinterest_board",
      "mcp__truescrape__pinterest_pin",
      "mcp__truescrape__pinterest_userBoards",
      "mcp__truescrape__reddit_post",
      "mcp__truescrape__reddit_commentReplies",
      "mcp__truescrape__reddit_postComments",
      "mcp__truescrape__reddit_postTranscript",
      "mcp__truescrape__reddit_subreddit",
      "mcp__truescrape__reddit_subredditDetails",
      "mcp__truescrape__reddit_user",
      "mcp__truescrape__reddit_userPosts",
      "mcp__truescrape__redfin_agent",
      "mcp__truescrape__redfin_forRent",
      "mcp__truescrape__redfin_forSale",
      "mcp__truescrape__redfin_search",
      "mcp__truescrape__rumble_channelVideos",
      "mcp__truescrape__rumble_video",
      "mcp__truescrape__rumble_comments",
      "mcp__truescrape__rumble_transcript",
      "mcp__truescrape__snapchat_profile",
      "mcp__truescrape__snapchat_spotlight",
      "mcp__truescrape__snapchat_spotlightComments",
      "mcp__truescrape__solo_page",
      "mcp__truescrape__soundcloud_artist",
      "mcp__truescrape__soundcloud_artistTracks",
      "mcp__truescrape__soundcloud_track",
      "mcp__truescrape__spotify_album",
      "mcp__truescrape__spotify_artist",
      "mcp__truescrape__spotify_playlist",
      "mcp__truescrape__spotify_podcast",
      "mcp__truescrape__spotify_podcastEpisodes",
      "mcp__truescrape__spotify_track",
      "mcp__truescrape__substack_comments",
      "mcp__truescrape__substack_post",
      "mcp__truescrape__substack_posts",
      "mcp__truescrape__substack_profile",
      "mcp__truescrape__substack_publication",
      "mcp__truescrape__taplink_page",
      "mcp__truescrape__telegram_channel",
      "mcp__truescrape__telegram_channelPosts",
      "mcp__truescrape__telegram_post",
      "mcp__truescrape__threads_post",
      "mcp__truescrape__threads_profile",
      "mcp__truescrape__threads_userPosts",
      "mcp__truescrape__tiktok_adLibraryAd",
      "mcp__truescrape__tiktok_collectionVideos",
      "mcp__truescrape__tiktok_commentReplies",
      "mcp__truescrape__tiktok_comments",
      "mcp__truescrape__tiktok_popularCreators",
      "mcp__truescrape__tiktok_followers",
      "mcp__truescrape__tiktok_hashtag",
      "mcp__truescrape__tiktok_hashtagVideos",
      "mcp__truescrape__tiktok_live",
      "mcp__truescrape__tiktok_playlistVideos",
      "mcp__truescrape__tiktok_playlists",
      "mcp__truescrape__tiktok_product",
      "mcp__truescrape__tiktok_profile",
      "mcp__truescrape__tiktok_profileRegion",
      "mcp__truescrape__tiktok_productReviews",
      "mcp__truescrape__tiktok_shopProducts",
      "mcp__truescrape__tiktok_song",
      "mcp__truescrape__tiktok_songVideos",
      "mcp__truescrape__tiktok_popularSongs",
      "mcp__truescrape__tiktok_transcript",
      "mcp__truescrape__tiktok_trending",
      "mcp__truescrape__tiktok_userVideos",
      "mcp__truescrape__tiktok_userShowcase",
      "mcp__truescrape__tiktok_video",
      "mcp__truescrape__tiktok_popularVideos",
      "mcp__truescrape__truthsocial_post",
      "mcp__truescrape__truthsocial_profile",
      "mcp__truescrape__truthsocial_userPosts",
      "mcp__truescrape__twitch_clip",
      "mcp__truescrape__twitch_profile",
      "mcp__truescrape__twitch_userSchedule",
      "mcp__truescrape__twitch_userVideos",
      "mcp__truescrape__twitter_community",
      "mcp__truescrape__twitter_communityTweets",
      "mcp__truescrape__twitter_profile",
      "mcp__truescrape__twitter_tweet",
      "mcp__truescrape__twitter_tweetTranscript",
      "mcp__truescrape__twitter_userTweets",
      "mcp__truescrape__walmart_product",
      "mcp__truescrape__walmart_reviews",
      "mcp__truescrape__youtube_channel",
      "mcp__truescrape__youtube_channelVideos",
      "mcp__truescrape__youtube_channelCommunityPosts",
      "mcp__truescrape__youtube_channelLives",
      "mcp__truescrape__youtube_channelPlaylists",
      "mcp__truescrape__youtube_channelShorts",
      "mcp__truescrape__youtube_communityPost",
      "mcp__truescrape__youtube_playlist",
      "mcp__truescrape__youtube_trendingShorts",
      "mcp__truescrape__youtube_transcript",
      "mcp__truescrape__youtube_video",
      "mcp__truescrape__youtube_commentReplies",
      "mcp__truescrape__youtube_videoComments",
      "mcp__truescrape__youtube_videoSponsors",
      "mcp__truescrape__zillow_agent",
      "mcp__truescrape__zillow_property",
      "mcp__truescrape__zillow_search",
      "mcp__truescrape__create_watch"
    ],
    "deny": [
      "mcp__truescrape__cancel_watch"
    ]
  }
}

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 truescrape. Review it before you use it.

Capability tags behind 252 rules
  • mcp__truescrape__amazon_offers untrusted-input
  • mcp__truescrape__amazon_product untrusted-input
  • mcp__truescrape__amazon_search untrusted-input
  • mcp__truescrape__amazon_shop untrusted-input, outbound
  • mcp__truescrape__appleMusic_album untrusted-input
  • mcp__truescrape__appleMusic_artist untrusted-input
  • mcp__truescrape__appleMusic_search untrusted-input
  • mcp__truescrape__appleMusic_track untrusted-input
  • mcp__truescrape__bitchute_channel untrusted-input, outbound
  • mcp__truescrape__bitchute_channelVideos untrusted-input, outbound
  • mcp__truescrape__bitchute_search untrusted-input
  • mcp__truescrape__bitchute_video untrusted-input, outbound
  • mcp__truescrape__bluesky_post untrusted-input, outbound
  • mcp__truescrape__bluesky_profile untrusted-input
  • mcp__truescrape__bluesky_userPosts untrusted-input, outbound
  • mcp__truescrape__dailymotion_channel untrusted-input
  • mcp__truescrape__dailymotion_channelVideos untrusted-input
  • mcp__truescrape__dailymotion_search untrusted-input
  • mcp__truescrape__dailymotion_video untrusted-input, outbound
  • mcp__truescrape__dailymotion_transcript untrusted-input, outbound
  • mcp__truescrape__deezer_album untrusted-input
  • mcp__truescrape__deezer_artist untrusted-input
  • mcp__truescrape__deezer_artistAlbums untrusted-input
  • mcp__truescrape__deezer_artistTopTracks untrusted-input
  • mcp__truescrape__deezer_charts untrusted-input
  • mcp__truescrape__deezer_playlist untrusted-input
  • mcp__truescrape__deezer_podcast untrusted-input
  • mcp__truescrape__deezer_podcastEpisodes untrusted-input
  • mcp__truescrape__deezer_search untrusted-input
  • mcp__truescrape__deezer_track untrusted-input
  • mcp__truescrape__deezer_userPlaylists untrusted-input
  • mcp__truescrape__inference_ageGender untrusted-input, outbound
  • mcp__truescrape__ebay_product untrusted-input, outbound
  • mcp__truescrape__ebay_search untrusted-input
  • mcp__truescrape__facebook_ad untrusted-input
  • mcp__truescrape__facebook_adTranscript untrusted-input, outbound
  • mcp__truescrape__facebook_adLibraryAdvertisers untrusted-input
  • mcp__truescrape__facebook_pageAds untrusted-input
  • mcp__truescrape__facebook_adLibrarySearch untrusted-input
  • mcp__truescrape__facebook_cityEvents untrusted-input, outbound
  • mcp__truescrape__facebook_commentReplies untrusted-input, outbound
  • mcp__truescrape__facebook_event untrusted-input, outbound
  • mcp__truescrape__facebook_eventsSearch untrusted-input
  • mcp__truescrape__facebook_group untrusted-input, outbound
  • mcp__truescrape__facebook_groupPosts untrusted-input, outbound
  • mcp__truescrape__facebook_marketplaceItem untrusted-input, outbound
  • mcp__truescrape__facebook_marketplaceLocations untrusted-input
  • mcp__truescrape__facebook_marketplaceSearch untrusted-input
  • mcp__truescrape__facebook_pagePosts untrusted-input, outbound
  • mcp__truescrape__facebook_pageReels untrusted-input, outbound
  • mcp__truescrape__facebook_post untrusted-input, outbound
  • mcp__truescrape__facebook_postComments untrusted-input, outbound
  • mcp__truescrape__facebook_postTranscript untrusted-input, outbound
  • mcp__truescrape__facebook_profile untrusted-input, outbound
  • mcp__truescrape__facebook_profileEvents untrusted-input, outbound
  • mcp__truescrape__facebook_profilePhotos untrusted-input, outbound
  • mcp__truescrape__identity_findSocialProfiles untrusted-input
  • mcp__truescrape__github_repository untrusted-input, outbound
  • mcp__truescrape__github_trendingDevelopers untrusted-input
  • mcp__truescrape__github_trendingRepositories untrusted-input
  • mcp__truescrape__github_user untrusted-input, outbound
  • mcp__truescrape__github_activity untrusted-input, outbound
  • mcp__truescrape__github_contributions untrusted-input, outbound
  • mcp__truescrape__github_followers untrusted-input, outbound
  • mcp__truescrape__github_following untrusted-input, outbound
  • mcp__truescrape__github_pullRequests untrusted-input, outbound
  • mcp__truescrape__github_userRepositories untrusted-input, outbound
  • mcp__truescrape__google_ad untrusted-input, outbound
  • mcp__truescrape__google_advertiserAds untrusted-input
  • mcp__truescrape__google_adLibraryAdvertisers untrusted-input
  • mcp__truescrape__google_jobs untrusted-input
  • mcp__truescrape__google_mapsSearch untrusted-input
  • mcp__truescrape__google_news untrusted-input
  • mcp__truescrape__google_search untrusted-input
  • mcp__truescrape__google_shopping untrusted-input
  • mcp__truescrape__instagram_audioReels untrusted-input
  • mcp__truescrape__instagram_commentReplies untrusted-input, outbound
  • mcp__truescrape__instagram_hashtagPosts untrusted-input, outbound
  • mcp__truescrape__instagram_highlight untrusted-input
  • mcp__truescrape__instagram_popularSearch untrusted-input
  • mcp__truescrape__instagram_post untrusted-input, outbound
  • mcp__truescrape__instagram_postComments untrusted-input, outbound
  • mcp__truescrape__instagram_profile untrusted-input
  • mcp__truescrape__instagram_profilePostCount untrusted-input, outbound
  • mcp__truescrape__instagram_profileSearch untrusted-input
  • mcp__truescrape__instagram_reelsSearch untrusted-input
  • mcp__truescrape__instagram_search untrusted-input
  • mcp__truescrape__instagram_transcript untrusted-input, outbound
  • mcp__truescrape__instagram_trendingReels untrusted-input
  • mcp__truescrape__instagram_userEmbed untrusted-input
  • mcp__truescrape__instagram_userHighlights untrusted-input
  • mcp__truescrape__instagram_userPosts untrusted-input, outbound
  • mcp__truescrape__instagram_userReels untrusted-input
  • mcp__truescrape__instagram_userTaggedPosts untrusted-input, outbound
  • mcp__truescrape__kick_clip untrusted-input, outbound
  • mcp__truescrape__komi_page untrusted-input, outbound
  • mcp__truescrape__kwai_post untrusted-input, outbound
  • mcp__truescrape__kwai_profile untrusted-input
  • mcp__truescrape__kwai_userPosts untrusted-input, outbound
  • mcp__truescrape__linkbio_page untrusted-input, outbound
  • mcp__truescrape__linkedin_ad untrusted-input, outbound
  • mcp__truescrape__linkedin_adsSearch untrusted-input
  • mcp__truescrape__linkedin_company untrusted-input, outbound
  • mcp__truescrape__linkedin_companyPosts untrusted-input, outbound
  • mcp__truescrape__linkedin_post untrusted-input, outbound
  • mcp__truescrape__linkedin_postTranscript untrusted-input, outbound
  • mcp__truescrape__linkedin_profile untrusted-input, outbound
  • mcp__truescrape__linkedin_searchPosts untrusted-input
  • mcp__truescrape__linkme_page untrusted-input, outbound
  • mcp__truescrape__linktree_page untrusted-input, outbound
  • mcp__truescrape__mastodon_post untrusted-input, outbound
  • mcp__truescrape__mastodon_postReplies untrusted-input, outbound
  • mcp__truescrape__mastodon_profile untrusted-input
  • mcp__truescrape__mastodon_userPosts untrusted-input, outbound
  • mcp__truescrape__milkshake_page untrusted-input, outbound
  • mcp__truescrape__mixcloud_profile untrusted-input
  • mcp__truescrape__mixcloud_search untrusted-input
  • mcp__truescrape__mixcloud_tag untrusted-input
  • mcp__truescrape__mixcloud_upload untrusted-input
  • mcp__truescrape__mixcloud_uploadComments untrusted-input, outbound
  • mcp__truescrape__mixcloud_followers untrusted-input
  • mcp__truescrape__mixcloud_following untrusted-input
  • mcp__truescrape__mixcloud_userUploads untrusted-input
  • mcp__truescrape__odysee_channel untrusted-input
  • mcp__truescrape__odysee_channelVideos untrusted-input
  • mcp__truescrape__odysee_search untrusted-input
  • mcp__truescrape__odysee_video untrusted-input, outbound
  • mcp__truescrape__odysee_comments untrusted-input, outbound
  • mcp__truescrape__peertube_channel untrusted-input
  • mcp__truescrape__peertube_channelVideos untrusted-input
  • mcp__truescrape__peertube_search untrusted-input
  • mcp__truescrape__peertube_video untrusted-input, outbound
  • mcp__truescrape__peertube_comments untrusted-input, outbound
  • mcp__truescrape__peertube_commentReplies untrusted-input, outbound
  • mcp__truescrape__peertube_transcript untrusted-input, outbound
  • mcp__truescrape__pillar_page untrusted-input, outbound
  • mcp__truescrape__pinterest_board untrusted-input, outbound
  • mcp__truescrape__pinterest_pin untrusted-input, outbound
  • mcp__truescrape__pinterest_search untrusted-input
  • mcp__truescrape__pinterest_userBoards untrusted-input
  • mcp__truescrape__reddit_post untrusted-input, outbound
  • mcp__truescrape__reddit_commentReplies untrusted-input, outbound
  • mcp__truescrape__reddit_postComments untrusted-input, outbound
  • mcp__truescrape__reddit_postTranscript untrusted-input, outbound
  • mcp__truescrape__reddit_search untrusted-input
  • mcp__truescrape__reddit_subreddit untrusted-input
  • mcp__truescrape__reddit_subredditDetails untrusted-input
  • mcp__truescrape__reddit_user untrusted-input
  • mcp__truescrape__reddit_userPosts untrusted-input, outbound
  • mcp__truescrape__redfin_agent untrusted-input, outbound
  • mcp__truescrape__redfin_forRent untrusted-input, outbound
  • mcp__truescrape__redfin_forSale untrusted-input, outbound
  • mcp__truescrape__redfin_search untrusted-input, outbound
  • mcp__truescrape__rumble_channelVideos untrusted-input
  • mcp__truescrape__rumble_search untrusted-input
  • mcp__truescrape__rumble_video untrusted-input, outbound
  • mcp__truescrape__rumble_comments untrusted-input, outbound
  • mcp__truescrape__rumble_transcript untrusted-input, outbound
  • mcp__truescrape__snapchat_profile untrusted-input
  • mcp__truescrape__snapchat_spotlight untrusted-input, outbound
  • mcp__truescrape__snapchat_spotlightComments untrusted-input, outbound
  • mcp__truescrape__solo_page untrusted-input, outbound
  • mcp__truescrape__soundcloud_artist untrusted-input
  • mcp__truescrape__soundcloud_artistTracks untrusted-input
  • mcp__truescrape__soundcloud_track untrusted-input, outbound
  • mcp__truescrape__spotify_album untrusted-input
  • mcp__truescrape__spotify_artist untrusted-input
  • mcp__truescrape__spotify_playlist untrusted-input, outbound
  • mcp__truescrape__spotify_podcast untrusted-input
  • mcp__truescrape__spotify_podcastEpisodes untrusted-input
  • mcp__truescrape__spotify_search untrusted-input
  • mcp__truescrape__spotify_track untrusted-input
  • mcp__truescrape__substack_comments untrusted-input
  • mcp__truescrape__substack_post untrusted-input, outbound
  • mcp__truescrape__substack_posts untrusted-input, outbound
  • mcp__truescrape__substack_profile untrusted-input
  • mcp__truescrape__substack_publication untrusted-input
  • mcp__truescrape__taplink_page untrusted-input, outbound
  • mcp__truescrape__telegram_channel untrusted-input
  • mcp__truescrape__telegram_channelPosts untrusted-input, outbound
  • mcp__truescrape__telegram_post untrusted-input, outbound
  • mcp__truescrape__threads_post untrusted-input, outbound
  • mcp__truescrape__threads_profile untrusted-input
  • mcp__truescrape__threads_search private-data, untrusted-input
  • mcp__truescrape__threads_searchUsers private-data, untrusted-input
  • mcp__truescrape__threads_userPosts untrusted-input, outbound
  • mcp__truescrape__tiktok_adLibraryAd untrusted-input
  • mcp__truescrape__tiktok_adLibrarySearch untrusted-input
  • mcp__truescrape__tiktok_collectionVideos untrusted-input, outbound
  • mcp__truescrape__tiktok_commentReplies untrusted-input, outbound
  • mcp__truescrape__tiktok_comments untrusted-input, outbound
  • mcp__truescrape__tiktok_popularCreators untrusted-input
  • mcp__truescrape__tiktok_followers untrusted-input
  • mcp__truescrape__tiktok_hashtag untrusted-input
  • mcp__truescrape__tiktok_hashtagVideos untrusted-input
  • mcp__truescrape__tiktok_live untrusted-input
  • mcp__truescrape__tiktok_playlistVideos untrusted-input
  • mcp__truescrape__tiktok_playlists untrusted-input
  • mcp__truescrape__tiktok_product untrusted-input, outbound
  • mcp__truescrape__tiktok_profile untrusted-input
  • mcp__truescrape__tiktok_profileRegion untrusted-input, outbound
  • mcp__truescrape__tiktok_searchSuggestions untrusted-input
  • mcp__truescrape__tiktok_productReviews untrusted-input, outbound
  • mcp__truescrape__tiktok_shopProducts untrusted-input, outbound
  • mcp__truescrape__tiktok_shopSearch untrusted-input
  • mcp__truescrape__tiktok_song untrusted-input
  • mcp__truescrape__tiktok_songVideos untrusted-input
  • mcp__truescrape__tiktok_popularSongs untrusted-input
  • mcp__truescrape__tiktok_transcript untrusted-input, outbound
  • mcp__truescrape__tiktok_trending untrusted-input
  • mcp__truescrape__tiktok_userVideos untrusted-input
  • mcp__truescrape__tiktok_userShowcase untrusted-input
  • mcp__truescrape__tiktok_video untrusted-input, outbound
  • mcp__truescrape__tiktok_popularVideos untrusted-input
  • mcp__truescrape__truthsocial_post untrusted-input, outbound
  • mcp__truescrape__truthsocial_profile untrusted-input
  • mcp__truescrape__truthsocial_userPosts untrusted-input, outbound
  • mcp__truescrape__twitch_clip untrusted-input, outbound
  • mcp__truescrape__twitch_profile untrusted-input
  • mcp__truescrape__twitch_userSchedule untrusted-input
  • mcp__truescrape__twitch_userVideos untrusted-input
  • mcp__truescrape__twitter_community untrusted-input, outbound
  • mcp__truescrape__twitter_communityTweets untrusted-input, outbound
  • mcp__truescrape__twitter_profile untrusted-input
  • mcp__truescrape__twitter_tweet untrusted-input, outbound
  • mcp__truescrape__twitter_tweetTranscript untrusted-input, outbound
  • mcp__truescrape__twitter_userTweets untrusted-input
  • mcp__truescrape__walmart_category untrusted-input
  • mcp__truescrape__walmart_product untrusted-input
  • mcp__truescrape__walmart_reviews untrusted-input
  • mcp__truescrape__walmart_search untrusted-input
  • mcp__truescrape__youtube_channel untrusted-input
  • mcp__truescrape__youtube_channelVideos untrusted-input
  • mcp__truescrape__youtube_channelCommunityPosts untrusted-input, outbound
  • mcp__truescrape__youtube_channelLives untrusted-input
  • mcp__truescrape__youtube_channelPlaylists untrusted-input
  • mcp__truescrape__youtube_channelShorts untrusted-input
  • mcp__truescrape__youtube_communityPost untrusted-input, outbound
  • mcp__truescrape__youtube_playlist untrusted-input
  • mcp__truescrape__youtube_search untrusted-input
  • mcp__truescrape__youtube_searchHashtag untrusted-input
  • mcp__truescrape__youtube_searchTypeahead untrusted-input
  • mcp__truescrape__youtube_trendingShorts untrusted-input
  • mcp__truescrape__youtube_transcript untrusted-input, outbound
  • mcp__truescrape__youtube_video untrusted-input, outbound
  • mcp__truescrape__youtube_commentReplies untrusted-input, outbound
  • mcp__truescrape__youtube_videoComments untrusted-input, outbound
  • mcp__truescrape__youtube_videoSponsors untrusted-input, outbound
  • mcp__truescrape__zillow_agent untrusted-input, outbound
  • mcp__truescrape__zillow_property untrusted-input, outbound
  • mcp__truescrape__zillow_search untrusted-input, outbound
  • mcp__truescrape__create_watch untrusted-input, outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.TrueScrape/truescrape/verify?hash=a4edc91a408ca443a660a9bc4b2c4190a6682927b9d1ab5303ce2faa6d952eab" | jq -e '.changed == false'

Pinned hash a4edc91a408c, from Oct 30, 2026, 03:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.TrueScrape/truescrape/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.TrueScrape/truescrape
[![anlyon.dev](https://anlyon.dev/badge/io.github.TrueScrape/truescrape.svg)](https://anlyon.dev/servers/io.github.TrueScrape/truescrape)

Source: MCP Registry · repository. Synced Oct 30, 2026, 03:17 UTC.