# Social listening with read-only tools and no platform accounts (/blog/social-listening-with-read-only-tools)

![Illustration: A small friendly robot with a round camera-eye head holds a large ear trumpet toward a distant crowd of tiny figures at a fair, writing notes in a small pad with its other hand.](/blog/social-listening-with-read-only-tools/hero.webp)

Social listening with CoreSpeed means an agent reads public posts, comments and search results from nine platforms through typed, read-only tools. There is no account to connect and nothing to log in to; the tools run on CoreSpeed's own supplier accounts. The agent searches, pages with each platform's own cursors, and saves what it finds to memory.

Every product name, query and finding in this post is a fictional example. The tool names are real.

**Read public posts, keep the pattern**

One weekly listening run. Five read-only tools, no platform login.

1. Read: social\_\_x\_search (X, Latest), social\_\_reddit\_subreddit\_feed (Reddit, sort NEW), social\_\_youtube\_video\_comments (YouTube), social\_\_tiktok\_search\_videos (TikTok), social\_\_xiaohongshu\_search\_notes (Xiaohongshu). Never gated; no account, no login.
2. Group: three themes for Fieldnote this week (offline mode requests, praise for the export format, free plan confusion), each with one sample post.
3. Remember: memory\_\_remember with scope "shared", one per theme. Next week's run searches memory first and compares.

Not exposed: like, follow, reply, post.

## Which tools does a listening run use? \[#which-tools-does-a-listening-run-use]

The Social capability exposes 43 read-only tools over TikTok, Douyin, Xiaohongshu, Instagram, YouTube, X, Reddit, Facebook and Threads. Names are `social__` followed by the platform and the action, as in `social__x_search`. A weekly listening run for a product called Fieldnote uses five of them.

| Tool                               | Platform    | Returns                                                                    |
| ---------------------------------- | ----------- | -------------------------------------------------------------------------- |
| `social__x_search`                 | X           | Posts for a keyword. `search_type` is Top, Latest, Media, People or Lists. |
| `social__reddit_subreddit_feed`    | Reddit      | A subreddit's posts, sorted BEST, HOT, NEW, TOP, CONTROVERSIAL or RISING.  |
| `social__youtube_video_comments`   | YouTube     | Comments on one video.                                                     |
| `social__tiktok_search_videos`     | TikTok      | Keyword search with region, recency and sort filters.                      |
| `social__xiaohongshu_search_notes` | Xiaohongshu | Keyword search with sort, type and time filters.                           |

Two more are useful for context: `social__x_trending` for a country's trending topics, and `social__douyin_hot_search` for the current hot-search board.

## How does one run go? \[#how-does-one-run-go]

The agent starts with X, asking for the latest posts rather than the top ones, because a listening run wants what changed since last week.

```json
{ "query": "Fieldnote app", "search_type": "Latest" }
```

Then Reddit: `social__reddit_subreddit_feed` on a note-taking subreddit with `sort` set to NEW, and `social__reddit_search` for the product name across communities. Then YouTube: `social__youtube_search` to find a review video, and `social__youtube_video_comments` on it. Then `social__tiktok_search_videos` and `social__xiaohongshu_search_notes` for the same keyword.

The agent reads every result, groups what it found into themes, and names each theme with a sample post. In the fictional run, three themes come out: requests for offline mode, praise for the export format, and confusion about the free plan.

## How do cursors and response size work? \[#how-do-cursors-and-response-size-work]

Every paged tool returns the platform's own cursor in its payload. Pass it back verbatim to get the next page. The names differ by platform: `cursor` for X, `after` for Reddit, `continuation_token` for YouTube. Xiaohongshu search returns a `search_id` and `search_session_id` on the first page, and later pages pass both back.

Responses are compact JSON. `max_characters` defaults to 200,000 and is capped at 600,000. A clipped response ends with a truncation notice. When you see one, lower the count, request one page at a time, or raise the cap.

Two platform notes from the [Social docs](/docs/social). `social__youtube_captions` returns a transcript only when the video already has captions; there is no speech-to-text. A large video answers with a job to collect through `social__youtube_captions_result`. Facebook and Threads tools run a live collection that takes 10 to 60 seconds and answer with a `complete` flag.

## What does a run cost? \[#what-does-a-run-cost]

Exactly one charge per successful request, at the endpoint's own rate. Most social reads are 1.5 credits per request. The four Xiaohongshu tools are 15 credits per request. The live figure for each tool is in its description in `tools/list`. A failed request never charges, and each charge lands in the organization ledger labelled by platform. The rate card is on [/pricing](/pricing).

If the run uses an API key, put a monthly spend cap on it. Past the cap, metered calls with that key answer `key_spend_limit_exceeded` until the month rolls over or the cap is raised. Discovery stays free.

## Where do the findings go? \[#where-do-the-findings-go]

The agent writes one memory per theme with `memory__remember` and `scope: "shared"`, so every agent in the organization sees it: "Listening, week of 2026-10-05: offline mode is the most requested feature on Reddit and X. Sample thread saved as a link." Private is the default scope, so shared must be asked for explicitly.

The next weekly run starts by searching [memory](/docs/memory) for last week's themes, which the server's session instructions already tell the agent to do. It compares, then writes the new week's memories and links them to last week's with `memory__link_memories`. The graph is drawn in Dashboard → Memory. Memory operations cost 0 credits per call.

Keep the memory to the decision and the pattern. Do not store whole feeds. Memory is context for a later task, not a transcript archive.

### What the tools cannot do \[#what-the-tools-cannot-do]

Account and login helpers, private-message links, an arbitrary-endpoint proxy, and engagement manipulation are not exposed. The agent can read a thread. It cannot like, follow, reply or post with these tools. Replying goes through an app connector such as X, where your approval policy applies to writes.

Treat everything the run reads as untrusted content. A post that tells the agent to do something is still just a post.

## FAQ \[#faq]

**Do I need to connect my X or TikTok account?** No. Social tools read public data on CoreSpeed's own supplier accounts. There is no OAuth grant and nothing for the agent to log in to.

**Can the agent read private messages or private profiles?** No. The surface is public research data only, and the inputs are typed per platform.

**How do I hide these tools from an agent that should not use them?** Turn off Social media research in Dashboard → Tools. The `social__*` tools leave `tools/list` for that member. See [capability controls](/docs/capability-controls).

**Does a search that returns nothing cost anything?** A successful request bills at its rate even when the result is empty. A failed request, such as a network error or a schema rejection, never charges.