API documentation

Social monitoring

Social monitoring is switched off. No social source is enabled yet, so the routes below answer source.enabled false with no reading and no item, and the dashboard shows no social panel. This page describes how it works once a licensed source is switched on.

It is switched on workspace by workspace. For a workspace it is switched on for, Stonewake reads what is said on social platforms and forums about every company the workspace holds in its book or watches, and every natural person it watches, and keeps a daily reading per company and person together with the items it rests on. The readings are served over the API and to AI assistants over MCP.

Where the items come from

The items come from a social listening service that licenses its results, never from scraping a platform. The first source it is built for is Awario, which collects mentions of a company's name on the web, on forums, on Reddit, YouTube and Vimeo, and in a narrow form on public Facebook pages and Instagram business posts. X is not read. A source is switched on only once its licence for this use is in writing. Every answer names in its source field whether a source is switched on, and the citation to show with its data.

How an item is matched to a company

An item counts for a company only when its own text names the company, compared exactly as news monitoring compares names. A whole name must match, so BP never matches bpost, a legal form is compared spelled out, case, punctuation and accents do not count, and the brand and short names the alias list states for the company's LEI count for that company alone. A name two companies of your workspace share matches neither of them, and a name on the reviewed list of names that also mean another company, a place or a common word, such as Merck or Continental, never matches on its own. The longest name wins, so an item that names Volkswagen Financial Services counts for that company and not also for Volkswagen. A hashtag counts as its words, so #BritishAirways names British Airways. A natural person your workspace watches is named the same way, by its whole name as news monitoring matches it, and words that name both a company and a person count for neither.

What is kept

For each matched item Stonewake keeps a key, the source's own item number, the platform, the link, the publication date, the language and the label the source gives its tone, positive, negative or neutral, or none. Stonewake keeps no author's name or handle, profile picture, follower count, title or text of a post. They are dropped as the item is read. A link on a social platform is kept only in the form that names the post alone. A link whose address shows a person's own page or handle, such as a name with @, a profile, user, member or author page, a channel, or a writer's own subdomain on a blog platform, is not kept, and the item answers url null with link_withheld true. It stays traceable by the source's item number, from which its key is made.

A watched person is read like a company, its reading context for the due diligence your institution runs on that person and never a score of the person, and a post by a private person is listed like any other. A sole trader, a natural person's business, has its posts listed without their sentiment label and has no reading. No person and no sole trader is ever scored.

Daily readings are kept for one year, and the items and their matches for one year and 30 days, so every kept reading can be traced to its items. YouTube items are kept for 30 days. Then they are deleted.

The daily reading

Each company has one reading per day, in UTC, over the items that named it in the 30 days ending on that day. YouTube items are listed but never counted, because YouTube's terms forbid adding up its data across channels. A reading counts the items per platform in platform_counts and by label in positive, negative, neutral and unrated, and it has one of three states.

  • reading. At least three items with a label. sentiment_net is the number of positive items minus the number of negative ones, divided by the items with a label, from -1, all negative, to +1, all positive.
  • too_little_coverage. Fewer than three items with a label, while every one of the 30 days was read in full. No sentiment is shown.
  • feed_gap. The day itself was not read in full, or there are fewer than three items with a label while some of the 30 days were not read in full, so missing items cannot be ruled out. No sentiment is shown.

A day is read in full once a complete pull of the source ran at least six hours after the day ended and the source did not report in between that it had stopped collecting. A company's days count from the day after the source first returned the alert set up for it, so a company without an alert never reads as quiet. Every reading lists item_keys, the newest 100 of the items it rests on, while items_window counts them all, and gap_days says how many of its 30 days were not read in full. Your workspace's readings rest only on items matched for your workspace, from the day after it started following the company.

The reading and the credit view

The social reading is context beside the credit view. It is no input of the risk score, which uses no model, no news and no social media.

Routes

  • GET /v1/social/companies lists the companies of your workspace's book and watch list and the persons it watches, with node_type person, each with its newest reading of a day read in full, paged with limit and offset. A company without a stored reading answers latest null, which says nothing about its coverage.
  • GET /v1/social/companies/{node_id} answers one company's readings, newest first, days of them (30 unless stated, at most 90), and its newest 100 items of the last 30 days, each with item_key, platform, url, link_withheld, published_at, language, sentiment and matched_name.

A key reads the companies of its own team's book and the companies and persons its workspace watches. Any other company answers 404, so the routes never show which companies another workspace follows. The MCP tool company_social reads both routes.