MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

Mentio

Social listening for agents: brand mentions across 16 platforms, scored for relevance and intent

Checks passed
13 / 22

1 failed · 8 not measured

Median response
628 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
72

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 628 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-06-18, serverInfo.name mentio-mcp.

  • Pass
    Lists tools

    tools/list returned 72 tools.

  • Pass
    Current protocol

    Negotiated 2025-06-18. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 628 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 628 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    735 of 744 parameters have a description (99%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-10-04T11:46:47.426805Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using Mentio

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http mentio https://mcp.mentio.dev/mcp

Capabilities

Tools 72

add_feeds

Connect RSS or Atom feeds to the workspace, up to 100 at a time (the workspace reads at most 500): each url is a feed's address, or a page's (a forum, a community, a blog) whose advertised feed is used. Every keyword reading workspace feeds then gets the feed's items holding its term, polled every hour; reading a feed is free, its matches bill like any mention. Each { url } is checked on its own and reported added, already (the workspace reads it) or failed with an error code: feed_unreadable (no feed found, or the site blocks automated readers), feed_login_required (a members-only forum: send it again as { url, auth: { type: "cookie", value } } with the person's own sign-in, stored encrypted and read for this workspace alone), feed_login_expired, feed_limit_reached. The first 8 added bring each keyword the newest 10 matching items of the last 30 days.

Discovered
add_keyword

Start tracking a keyword: send term (the word or phrase), or query instead, a boolean query as Brand24, Awario or Brandwatch write one ("acme cloud" AND (pricing OR price*) -jobs: quoted phrases, words, AND, OR, NOT or -word, parentheses, a * at a word end; side by side means AND), compiled into term and matching (the first word of every alternative is the term searched everywhere and must be the same in all, so put the brand first; the other words are required, NOT words excluded, exact phrase only); never both, and never query with matching.requiredTerms, requiredMode, requiredGroups, excludedTerms or exactPhrase. A query whose alternatives start with different words (acme OR globex, (acme OR globex) pricing) is refused with query_needs_one_term: add one keyword per term. kind is "brand" (default), "competitor" or "topic". platforms optionally restricts it to some platforms (default: every platform). New mentions containing the term will be matched, classified and delivered. A multi-word term also matches a post holding its words close together (any order, plurals and spellings like non-profit/nonprofit); such a post is kept and billed only when the classifier scores it relevant. Wrap the term in double quotes, or set matching.exactPhrase, for the exact phrase only. Prefer short terms people actually write ("fundraising agency") over sentences ("looking for a fundraising agency"). For a common word, narrow it with `matching` (requiredTerms with requiredMode any|all, requiredGroups: combinations where the post must hold every term of at least one, as [["weather","alert*"],["tsunami"]], so one keyword replaces a search per line, excludedTerms, a `*` wildcard at an end of any rule term, excludedAuthors, caseSensitive, exactPhrase, subreddits: { only, excluded } to keep its Reddit posts to some subreddits or out of some): a post the rules reject is never stored or billed. `context` is one sentence the classifier reads for this keyword only ("Arc is our browser; ignore the geometry word"). `cap` ({ mentions: N, per: "day" | "week" | "month" }, per defaults to month) is a ceiling on its matched mentions per UTC day, week (from Monday) or month: at the cap it stops matching until the next period starts or until the cap is raised, while its daily keyword charge continues. A daily cap keeps mentions coming every day with a fixed ceiling on spend (N × $0.008 a day at most, plus the keyword). `groupId` puts it in a keyword group (list_groups; default: the workspace's default group); a term may be tracked once per group, so two groups may track the same term as two keywords. `reviewSources` collects reviews: pass each page's link (url: an App Store or Google Play app, a Trustpilot page, a Google Maps place or its maps.app.goo.gl share link) or platform (appstore|googleplay|trustpilot|googlemaps) and id; the app stores also take countries (two-letter codes, default us) and Google Play a language (default en). Every review of the page becomes a mention of this keyword, polled daily, and the last 30 days (newest 100) come in free at once. `feeds` reads RSS or Atom feeds: pass each as { url }, a feed's URL or a page's (a forum, a community, a blog) whose advertised feed is used; a URL with no feed is refused. An item of a feed is a mention of this keyword when it holds the term, polled every hour, and the newest 10 matching items of the last 30 days come in at once (billed like any mention). `platforms: []` makes a reviews-only or feeds-only keyword. `comments` ({ enabled: true, maxPerPost: N }, off by default) reads the comments under its relevant mentions from 30 minutes after each post, as long as its platform's conversations last (a day on Reddit, Hacker News and Bluesky, a week on GitHub, Stack Overflow and DEV, a month on YouTube), $0.008 per comment delivered (comments of fewer than three words are skipped), at most maxPerPost (default 20) per mention; list them with list_mention_comments. `display` ({ languages: { only, excluded }, countries: { only, excluded } }, lowercase ISO 639-1 and ISO 3166-1 alpha-2 codes) chooses which of its mentions you see by the post's language and the author's country: a hidden mention is still matched, classified and billed, but stays out of search_mentions, exports, alerts and digests; a post whose language or country nobody could tell is always shown. On GitHub a keyword also gets events about repositories naming it; matching.repositories chooses them: events (traction: a repository under 30 days old reached 10 stars; stars: a star milestone from 100 up; growth: fast growth in a week; new: every repository created, even with no stars, off by default), minStars and minWeeklyStars (stars gained in 7 days, 25 or more). An event outside the rule is dropped before it is stored, so it is never billed: "repositories about X with 200+ stars gaining 100 a week" is { events: ["stars","growth"], minStars: 200, minWeeklyStars: 100 }.

Discovered
create_alert

Create an alert rule. mode "instant" sends each matching mention as it happens; "hourly" sends one digest every UTC hour (five minutes past) for the previous hour, nothing when it had no mention over the floor, takes no schedule and no email channel (Slack, Telegram, webhook); "daily" sends one digest at schedule.hour in schedule.timezone; "weekly" sends one a week on schedule.weekday (0 Sunday to 6 Saturday). filter narrows by keywordIds, platforms, minRelevance (the relevance floor: absent sends relevant mentions only, 40 and up; 0 sends every scored match, noise included), minConfidence, sentiments, intents, excludeAuthors, minFollowers, tags, linkHosts (the hosts a post links to, a host or any subdomain of it). channelIds come from list_channels.

Discovered
create_automation

Create an automation: a name, a filter in the vocabulary of search_mentions (as create_view takes it; empty acts on every mention) and actions: addLabels (up to 10) and/or assigneeId (a member, assigned only when nobody is). It runs on every NEW mention its filter selects, right after scoring and before delivery, so an alert rule on `labels` can route what it labels ("buy intent on LinkedIn" -> label hot-lead -> an alert rule on labels [hot-lead] to the sales channel). Existing mentions are not touched: use update_mentions for those. At most 25 per workspace; they run oldest first, a later one seeing labels an earlier one added.

Discovered
create_group

Create a keyword group: a name (unique per workspace), optionally your own id for it (externalId, unique too, a customer id say), and optionally its own company description (context: who the business is, what it sells, for whom), which the classifier reads in place of the whole workspace profile (guidelines and competitors included) for this group's keywords, so a rule for the group goes in that text. One group per customer with its description is how a reseller gets each customer judged as itself. Then pass its id as groupId to add_keyword.

Discovered
create_segment

Save an audience segment: a name plus a filter (platforms, tags, follower range, minimum mentions or negatives, intents seen, keyword kinds mentioned or never mentioned, first seen within N days, linkHosts they have shared a link to). Evaluated on every read, never materialized. With groupId the segment belongs to that keyword group and is only listed there.

Discovered
create_view

Save a view: a name plus a filter in the vocabulary of search_mentions (keywords or keyword kinds, platforms, status, relevant, sentiments, intents, languages, author countries, author tags, follower range, replies, link hosts, automated, organization, free text), lists any-of, `not` lists none-of, every condition ANDed, plus anyOf for OR: groups of those conditions, at least one of which must hold. Nothing is materialized: the view selects whatever matches when it is read.

Discovered
delete_activity

Delete an outreach activity logged by mistake. The person's owner and stage stay as they are. An activity logged in a keyword group is found with that groupId.

Discovered
delete_alert

Delete an alert rule. Its channels stay and can serve other rules. Irreversible; disabling it (update_alert enabled=false) keeps the rule.

Discovered
delete_automation

Delete an automation. The labels it added stay on their mentions.

Discovered
delete_feed

Stop the workspace reading a feed (fd_..., from list_feeds). Its mentions stay; keywords that name the same feed in their own feeds keep reading it.

Discovered
delete_group

Delete a keyword group and EVERY keyword in it (each as delete_keyword does: its mentions go with it). The default group cannot be deleted. Says how many keywords went.

Discovered
delete_keyword

Stop tracking a keyword and delete its mentions (a post also matched by another keyword stays). Alert rules that named it stop naming it; a rule that named only this keyword is disabled rather than widened to every keyword. Irreversible; muting (update_keyword muted=true) keeps the mentions.

Discovered
delete_segment

Delete a saved segment. Nobody in it is affected. A segment saved in a keyword group is found with that groupId.

Discovered
delete_view

Delete a saved view. No mention is affected.

Discovered
dismiss_attention

Dismiss an attention item (att_... from list_attention): it leaves the open list and does not come back while its condition lasts.

Discovered
duplicate_keyword

Create a new keyword with an existing one's settings: give the new term (or the same term with another groupId, since a term is tracked once per group). It copies the kind, platforms, context, every matching rule, the monthly mention cap and the comments setting; review apps and feeds only when listed in include (reviewSources, feeds), since two keywords on one app collect and bill every review twice. It is a new keyword: $5 per month, and its last 30 days come in at once.

Discovered
get_alert

One alert rule by id: its filter, mode and schedule, channels and delivery stats.

Discovered
get_analytics_breakdown

One table grouped by a dimension `by`: platform, keyword, sentiment, emotion (the emotion toward the keyword; "unclassified" when not judged), intent, status (open, ignored, done), hour (weekday and hour of day in timezone, for "when do people talk"), person (who posted most, with followers), language (ISO 639-1), country (where the authors are, ISO 3166-1 alpha-2; "unknown" for posts nobody could place), subreddit (Reddit posts only: which subreddits your mentions come from), domain (the sites posts link to), link (the URLs posts link to) or hashtag (lowercase, without the #). A post can carry several intents, domains, links or hashtags, so those shares can add up past 100. Each row has matched, relevant, share of the window in percent, a sentiment split and, with compare=true, the same group in the period right before. Same window parameters as get_analytics_summary. At most 50 groups, most matched first.

Discovered
get_analytics_series

Mentions over time: one point per day or week (bucket; default day up to 90 days) with matched, relevant and sentiment counts, as a single "total" series or split with by="platform" or by="keyword" (top 20, the rest as "other"). Same window parameters as get_analytics_summary; compare=true adds `previous`, the period right before, points aligned by index.

Discovered
get_analytics_summary

Headline counts for a window: matched and relevant mentions, distinct posts and people, sentiment split, buying intent and questions, estimated reach (followers of the people whose count is known), and triage (open, ignored, done, waiting over 24h, handled rate, median time to done). Window: range 7d|30d|90d|365d ending today, or from/to as YYYY-MM-DD; keywordIds and platforms are lists, and notKeywordIds and notPlatforms leave keywords or platforms out; timezone (IANA) cuts the days, UTC by default; compare=true adds the same counts for the period right before as `previous`. Time axis is the publish date.

Discovered
get_automation

One automation by id.

Discovered
get_company

Read what the classifier knows about the company: name, description, use cases, own accounts, and the composed context it reads to judge relevance (for keywords in a group that carries its own description, the group's text replaces it; see list_groups).

Discovered
get_filters

The workspace filters: noise rules applied to every keyword before a mention is stored (excluded terms and authors, excluded GitHub repositories, the subreddits Reddit posts may or may not come from). A post they reject is never classified, delivered or billed. Per-keyword rules live on each keyword (`matching`).

Discovered
get_group

One keyword group by id, with how many keywords it holds.

Discovered
get_keyword

One keyword by id: term, kind, platforms, matching rules, context, its monthly mention cap and whether it is at it (pausedForCap), stats (mentions, relevant, last 7 days, this month, your feedback) and poll health per platform.

Discovered
get_keyword_health

Is a keyword worth what it costs, and what would fix it. Over a trailing window (range 7d, 30d or 90d; default 30d): a status (healthy; noisy = 20 or more scored matches and under 30% relevant; quiet = 7 days or older with nothing relevant; capped; paused; new = under 7 days old) with reasons in plain words, matches, relevant, noise share by platform and week, what it cost, the words and authors over-represented in its noise, and suggestions. Each suggestion has a `patch`: pass it to update_keyword with the keyword id to apply it (lists hold the whole new list), and an `effect` measured by running the matcher's rules over the window's posts (noise and relevant matches it would have removed, cents saved). ai=true adds a context rewritten by a language model (cached a day; 20 model calls an hour per workspace). Read only, never billed, cached 5 minutes.

Discovered
get_mention

Fetch a single mention by id, including its classification (relevance, sentiment, emotion, intents, confidence, uncertain, note).

Discovered
get_mention_stats

Mention counts for the last N days (default 7), grouped by platform and by sentiment, optionally filtered to one platform or keyword. Unclassified mentions appear under sentiment "unclassified".

Discovered
get_person

One person from the audience, with their counts, tags, notes and mute for your organization, their outreach (owner, stage, last contacted), plus their public profile (bio, company, location, website and linked accounts) where the platform lists it. GitHub authors are looked up today; profile is null until then. With groupId, the person as that keyword group sees them. Email addresses are not returned over MCP: profile.email is always null (the dashboard and the REST API show it where the person published it).

Discovered
get_reviews_report

The reviews report: App Store, Google Play, Trustpilot and Google reviews the keywords collect, over a window. Totals (reviews, average stars, 1-5 distribution, replies, open 1-2 star reviews), the tags on the unhappy reviews, and one row per review page with its average stars per day or week (bucket). A review matched by two keywords counts once. Same window parameters as get_analytics_summary; compare=true adds the previous period.

Discovered
get_search

One search: status (queued, running, done, failed), each platform's progress (status, the reason a platform was skipped or failed, results and relevant counts), totals, costCents so far and maxCostCents.

Discovered
get_share_of_voice

Brand against competitors: every keyword matched in the window with matched, relevant, negative and buy-intent counts and its share of brand plus competitor matches in percent (topics are counted but stay out of the split). Same window parameters as get_analytics_summary; compare=true adds the previous period's matched per keyword.

Discovered
get_usage

The prepaid balance (ledger, pending mention charges, effective), the daily burn and the days it buys, how many keywords run and how many the wallet paused, the matches recorded today and over 30 days, and whether tracking is stopped or the balance is low. Every matched mention bills $0.008 and every active keyword $5 a month, charged daily.

Discovered
get_usage_breakdown

What the workspace consumed and was charged over a window, in USD cents at list price, grouped by ONE dimension per call: `by` = keyword (the default: days charged, mentions billed, totalCents per keyword, a deleted keyword kept with keyword.removed=true), platform, or day. `range` (7d, 30d, 90d; default 30d) reads a trailing window ending today; `month` (YYYY-MM) reads one calendar month, the shape a bill or a per-customer margin is reconciled against; `from`/`to` (YYYY-MM-DD) any window up to 366 days. `keywordIds`, `groupIds` and `platforms` narrow every number (a keyword-day has no platform, so a platform filter counts mentions and comments only), and `notKeywordIds`, `notGroupIds` and `notPlatforms` leave them out. Every call also returns the window's totals (keyword-days, matched and billed mentions, list-price total, what the ledger actually debited). Rows are paged (limit, offset, total). Answer "what did keyword X cost" and "where does the money go" from it; get_usage answers "how much is left". Each keyword's running-month cost is also on get_keyword as stats.cost.

Discovered
list_activities

The outreach log on one person, newest first: every logged contact with who reached out, the channel (email, x, linkedin, bluesky, reddit, github, call, meeting, other), when, and a short note. Check it, and the person's outreach owner, before reaching out so two teammates never contact the same person without knowing. With groupId, the log that keyword group keeps on them.

Discovered
list_alerts

List alert rules: what each watches (filter), whether it fires instantly or as an hourly, daily or weekly digest (mode, schedule), and which channels it sends to.

Discovered
list_attention

What needs a person right now, newest first: a keyword whose mentions spiked in the last hour (mention.spike), whose negative share of the last 24 hours jumped (sentiment.negative_spike), that turned noisy (keyword.noisy), a channel whose last sends all failed (channel.failing), or a workspace feed that failed 3 reads in a row (feed.failing). Detected once an hour; items resolve on their own when the condition is gone. Open items by default; status "all" reads the history. Each item has a one-line title, the facts in data, and data.url pointing at the dashboard.

Discovered
list_automations

The workspace's automations, in the order they run: each is a mention filter (the search_mentions vocabulary) plus actions (labels to add, a member to assign), applied to every NEW mention the filter selects as soon as it is scored and before it is delivered.

Discovered
list_channels

List the channels alerts can be sent to: Slack channels, Telegram chats, email address lists, webhooks. Telegram chats connect from the dashboard (Settings, Integrations), not through the API.

Discovered
list_feeds

The RSS and Atom feeds the WORKSPACE reads (forums, communities, blogs): every keyword with readsWorkspaceFeeds (the default) gets an item of one of these feeds as a mention when the item holds its term, with its matching rules, billed like any mention. Each feed with when it was connected and how its hourly poll goes. q filters on address or title; limit and offset page, total counts.

Discovered
list_groups

The keyword groups of the workspace, the default first: how keywords are grouped (a customer, a campaign, a product). A term may be tracked once per group; every keyword belongs to one; get_usage_breakdown by=group says what each cost. externalId finds the group carrying your own id.

Discovered
list_keywords

The tracked keywords of your organization with their stats, poll health, matching rules and context, plus `total`. Without arguments: every keyword, newest first. Search the term and context (q), narrow by kinds, statuses (active, muted by a person, paused by the wallet, noisy: paused by the noise brake, capped at its monthly mention cap), platforms or groupIds, order (sort) and page (limit, offset).

Discovered
list_labels

Labels in the workspace and how many mentions carry each, the most used first, paged with limit and offset (total says how many there are). Filter mentions by them with search_mentions labels / notLabels.

Discovered
list_ledger

Every movement of the prepaid balance, newest first: the welcome credit, top-ups, refunds, the daily keyword-day and mention debits, adjustments. A debit row carries the UTC day it settled and the cumulative units behind it. Cursor paged (limit up to 100). Adding funds is a checkout on the dashboard's billing page or POST /v1/billing/top-ups on the REST API.

Discovered
list_members

The people in the workspace with their role (owner, admin, member), email and user id. The user id is the value update_mention assigneeId and update_person ownerId take.

Discovered
list_mention_comments

The comments under a mention's post, newest first: the whole thread, whether or not each comment names the keyword, each with its author, text, time, engagement, a light sentiment and intent read, and mentionId when the comment is itself one of your mentions. Filled from 30 minutes after the post and read again while its platform's conversations last (a day on Reddit, Hacker News and Bluesky, a week on GitHub, Stack Overflow and DEV, a month on YouTube) for relevant mentions whose keyword has comments enabled (add_keyword / update_keyword `comments`); empty otherwise. Page with cursor.

Discovered
list_people

The people who wrote mentions matching your keywords: name, profile, platform, how many of their posts matched (and how many scored relevant), their sentiment split, when they were first and last seen, and where your outreach stands (owner, stage, last contacted). Filter by platform or name, find one person by handle or profile link (handle), outreach stage (stages, or notStages to leave some out), owner (ownerIds, "none" for unowned; notOwnerIds to leave owners out), links (linkHosts, or notLinkHosts for people who never linked there) or automated (bot accounts, whose posts mostly read machine-made); sort by mentions or recency. With groupId, only the people who mentioned that keyword group's keywords, with that group's own counts, tags, notes, merges and outreach. Use search_mentions with authorId to read what one person said. Email addresses are not returned over MCP: profile.email is always null (the dashboard and the REST API show it where the person published it).

Discovered
list_search_results

The posts a search found, newest first, each with post, author, classification (relevance 0 to 100, sentiment, intents, note; null while it waits for the classifier), relevant, and alreadyInWorkspace (the post is already one of your mentions). minRelevance keeps the scored results at or above it; limit (default 50) and cursor page. Readable while the search runs.

Discovered
list_searches

The searches started in the workspace (start_search), newest first, kept 30 days; limit (default 50) and cursor (nextCursor from the previous page).

Discovered
list_segments

Your saved audience segments (named filters such as "Influencers" or "Switch prospects"), each with the number of people in it right now, plus presets you can save with create_segment. Pass a segment id to list_people to see its members. With groupId, the segments saved in that keyword group, counted over its own people.

Discovered
list_views

Your saved views (named filters over mentions such as "Negative about us" or "Needs a reply"). Pass a view id as viewId to search_mentions to read exactly what it selects.

Discovered
log_activity

Record that someone reached out to a person: an email, a DM, a call. The first contact claims an unowned person for whoever reached out and moves not_contacted to contacted; an existing owner and a later stage are kept (set them with update_person). memberId defaults to the signed-in user; with an API key and no memberId the activity is unattributed and claims nobody. Returns the activity and the person as they now read. With groupId the activity, and the owner and stage it moves, are that keyword group's own.

Discovered
merge_people

Declare that two accounts are the same person, for your organization only: fold account `id` into person `into`. Their mentions, tags and notes combine; the folded account shows under the person's platforms. With groupId the merge holds in that keyword group only.

Discovered
mute_authors

Mute authors on an alert without touching the rest of its filter. Accepts profile or post links, @handles, u/names, Bluesky DIDs or display names; a link is stored as the author's profile. Already muted authors are skipped; an entry that names no person is rejected.

Discovered
search_mentions

Search tracked mentions for your organization. Filter by keyword, platform, status (open, ignored, done), relevant, minimum relevance, minimum confidence (0 to 1), sentiment, the emotion the author shows toward the keyword (emotions or notEmotions: joy, trust, anticipation, surprise, confusion, frustration, anger, fear, sadness, neutral; one not judged yet never passes emotions and always passes notEmotions), intent, free text (q, the post text or the author name), time range (ISO 8601), one person (personId from list_people), assignee (assigneeId), author reach (minFollowers, maxFollowers), your labels on the mention (labels, notLabels), engagement the platform reported (minLikes, minReposts, minReplies, minQuotes, minViews, minBookmarks; a post without the count never passes), review stars (ratings, or notRatings to leave some out), author tags (tags, any-of), the hosts a post links to (linkHosts, any-of, a host or any subdomain of it), Reddit subreddits (subreddits or notSubreddits, names without the r/), replies against top-level posts (isReply), posts against comments (kind: post or comment), whether the post reads as machine-made (automated=true for the bots, false for the rest), where the author is (countries, or notCountries to leave some out, lowercase ISO 3166-1 alpha-2 codes like in, us, de, as the classifier read the profile and the post; an unknown country passes notCountries), whether the author is a company or organization (organization=true for companies, brands and organizations, false for people), the language of the post (languages or notLanguages, ISO 639-1), an alert rule's whole filter (alertId, the same mentions the rule would send), a saved view's filter (viewId, from list_views, ANDed with the rest), the kind of keyword that matched (keywordKinds: brand, competitor, topic, or notKeywordKinds to leave kinds out), authors to hide (notAuthors: names, handles or profile links), or the keyword's group (groupIds, or notGroupIds to leave groups out; ids from list_groups). Every filter is ANDed; for OR, anyOf takes up to 10 groups of the same conditions (an object each, all its conditions ANDed) and keeps a mention when at least one group holds, on top of the rest: anyOf=[{platforms:["reddit"],sentiments:["negative"]},{intents:["buy_intent"]}]. Snoozed mentions are hidden unless snoozed=true. sort="newest" (default), "priority" (attention score from relevance, author reach, intent and age, over the last 30 days of matches only; each mention carries it as `priority`), "reach" (most followers first, unknown last) or "engagement" (likes + reposts + replies + quotes the platform reported, posts without engagement last); reach and engagement rank the last 30 days of matches unless a time range start is given. Each author carries influence, 0 to 100 from followers on a log scale. Returns 10 mentions by default (limit, up to 100). Each mention nests post, author, classification and triage. A cross-post (the same author posting the same text again for the same keyword within three days, like one announcement in five subreddits) is listed once: the original carries the others in duplicates; includeDuplicates=true lists them separately, each with duplicateOf. A GitHub repository event (a new repository, a star milestone, fast growth) is a mention whose post.kind is repository, with the facts in post.repository (name, event, stars, weeklyStars); kind=repository lists them alone.

Discovered
split_person

Undo a merge: the account becomes its own person again for your organization. A merge made in a keyword group is undone with that groupId.

Discovered
start_search

Search a term over the last 24h, 7d or 30d (range, default 7d) without creating a keyword: each platform that can search back in time is read once (platforms to narrow; at most 25 results a platform) and every result is scored for relevance, sentiment and intents against the company profile, with kind (brand, competitor, topic: the default) and context telling the classifier what the term is. Results stay apart from the mentions: no alert, digest or report sees them. Billed $0.008 per scored result; the workspace must have topped up at least once (else funding_required) and the balance must cover the maximum (maxCostCents) (else insufficient_balance). At most 10 searches an hour. Returns the search queued: poll get_search until status is done (usually a minute or two), then read list_search_results.

Discovered
unmute_authors

Unmute authors on an alert without touching the rest of its filter. Name each by the stored entry or any link to that profile or its posts; authors that are not muted are ignored.

Discovered
update_alert

Change an alert: name, enabled, mode, schedule, filter (replaces the whole filter) or channelIds (replaces the whole list).

Discovered
update_automation

Rename, pause (enabled: false) or change an automation. `filter` and `actions` each replace the whole of themselves; the change applies to mentions scored from then on.

Discovered
update_company

Update the company profile (name, description, useCases, accounts) or override the classifier context directly. Profile edits recompose the context; an explicit context wins until the next profile edit. The context is the single biggest lever on relevance scoring, so keep it accurate and specific; it does not reach keywords in a group with its own description (update_group for those). Omitted fields are untouched.

Discovered
update_feed

Rename a workspace feed (title; null clears it) or set its sign-in for a members-only forum (auth: { type: 'cookie', value } with the Cookie header the person's signed-in browser sends, or { type: 'header', name, value }). A sign-in is checked by reading the feed with it (feed_login_expired when it does not work), stored encrypted, never shown again, and the feed is then read for this workspace alone; auth: null removes it.

Discovered
update_filters

Change the workspace filters: excludedTerms (a `*` at an end is a wildcard), excludedAuthors (links, handles, names), excludedRepos (owner/name or a github.com link), subreddits.only (an allowlist; when set, excluded is ignored) and subreddits.excluded. Each list optional; an omitted list is untouched, an empty one clears it. Takes effect on new mentions within a minute.

Discovered
update_group

Rename a keyword group, change your id for it (externalId, null clears) or its company description (context, null clears: the workspace profile applies again; new mentions are judged with it at once). The default group can be renamed but takes no description: it is the workspace itself and reads the company profile (update_company).

Discovered
update_keyword

Change a keyword: rewrite it from a boolean query (query: replaces the term and the rules requiredTerms, requiredMode, requiredGroups, excludedTerms and exactPhrase with what the query compiles to, never sent with them or with term; a later hand change of the term or those rules clears the stored query), rename it (term: the new term is tracked from now on, with no look-back; the keyword keeps its id, its settings and what the old term found), the platforms it is tracked on (platforms: a list, or null for every platform), mute or unmute it, reclassify it (kind), set its classifier context (null clears), or its matching rules (matching: each field optional, an empty list clears one; requiredTerms with requiredMode any|all, requiredGroups (every term of at least one combination), excludedTerms, a `*` wildcard at an end of any rule term, excludedAuthors, caseSensitive, exactPhrase: true for the exact phrase only, false to also match its words close together, subreddits: { only, excluded } for its Reddit posts alone, each list replaced when sent), or its monthly mention cap (cap: { mentions: N, per: "day" | "week" | "month" }, null removes it; a cap above the current period's count resumes a capped keyword at once), or move it to another group (groupId; a 409 when that group already tracks the term), or replace where it collects reviews, App Store, Google Play, Trustpilot or Google Maps (reviewSources: the whole list, [] disconnects them; a newly added app or country brings its last 30 days free), or replace the RSS or Atom feeds it reads (feeds: the whole list of URLs, [] disconnects them; a newly added feed brings its newest 10 matching items of the last 30 days). It also switches comments on or off (comments: { enabled, maxPerPost }; $0.008 per comment delivered), and sets which mentions it shows by language and country (display: { languages: { only, excluded }, countries: { only, excluded } }, each list replaced when sent; hidden mentions are still billed, and the change applies to older mentions too). Rules apply to new mentions only. Returns the updated keyword with its stats. On GitHub a keyword also gets events about repositories naming it; matching.repositories chooses them: events (traction: a repository under 30 days old reached 10 stars; stars: a star milestone from 100 up; growth: fast growth in a week; new: every repository created, even with no stars, off by default), minStars and minWeeklyStars (stars gained in 7 days, 25 or more). An event outside the rule is dropped before it is stored, so it is never billed: "repositories about X with 200+ stars gaining 100 a week" is { events: ["stars","growth"], minStars: 200, minWeeklyStars: 100 }.

Discovered
update_mention

The one write on a mention: status "ignored" (not interesting) or "done" (handled), "open" to put it back; assign it to a workspace member (assigneeId, null to unassign); snooze it out of the feed until an ISO 8601 instant (snoozedUntil, null to wake it); leave an internal note (note, null to clear); replace its labels (labels: your own words like hot-lead or replied, [] clears; update_mentions adds or removes a few on many); or correct the classifier with `relevant` (true or false: your verdict, which sets relevance to 100 or 0 and moves the mention in or out of the relevant feed; null withdraws it) and `sentiment` (a corrected label; null restores the classifier's). Use the verdicts when the user says a mention is noise or was missed. Omitted fields are untouched. Delivery and billing never change.

Discovered
update_mentions

One change to up to 100 mentions at once (ids from search_mentions): status ("ignored", "done", "open"), assigneeId (a member, null to unassign), addLabels and removeLabels (removals first, so moving a label is one call). All of it lands or none of it does; ids the workspace has no mention by come back in notFound, and a mention still being classified keeps its status (it is listed in pending) but takes the labels and assignee. Use it to triage a page of results, or to label mentions that existed before an automation.

Discovered
update_person

Annotate a person for your organization: replace their tags, set notes, mute/unmute them, or set the outreach owner (ownerId, a member user id; null clears) and stage. Muting hides their posts from the feed and from every channel; ingest and billing are unchanged. With groupId the annotations are that keyword group's own: muted hides the person from the mentions of that group's keywords only (feed, alerts and digests), and the group's tags show on those mentions next to the workspace's. A mute set without groupId hides them for every group.

Discovered
update_segment

Rename, describe or refilter a saved segment. `filter` replaces the whole filter. A segment saved in a keyword group is found with that groupId.

Discovered
update_view

Rename, describe or refilter a saved view. `filter` replaces the whole filter.

Discovered
whoami

The workspace this credential acts on, how it authenticated (an API key or an OAuth sign-in), whether it may write, and the person behind it when there is one. Call it once at the start of a session to name the workspace and know whether write tools are available.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected628 ms72