Mentio

dev.mentio/mcp · v1.0.0 · marketing-and-seo

Mentio is healthy: it completed an MCP handshake in 2419 ms and exposes 57 tools. It scores 58/100.

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

Endpoint: https://mcp.mentio.dev/mcp (streamable-http)

No repository listed · Website · JSON · Add to my inventory

Score 58/100

health17 / 25
authEase15 / 15
toolQuality13.5 / 15
maintenance7 / 15
adoption0 / 10
usage0 / 10
security5 / 10

Scoring v0.3, computed 2026-10-15T02:36:22.716Z.

Health history

Checked (UTC)StatusLatencyError
2026-10-14T23:20:46.918ZHealthy2419

Tools (57)

list_segmentsYour 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, counte
create_segmentSave 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 seg
update_segmentRename, describe or refilter a saved segment. `filter` replaces the whole filter. A segment saved in a keyword group is found with that groupId.
delete_segmentDelete a saved segment. Nobody in it is affected. A segment saved in a keyword group is found with that groupId.
list_viewsYour 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.
create_viewSave a view: a name plus a filter in the vocabulary of search_mentions (keywords or keyword kinds, platforms, status, relevant, sentiments, intents, languages, author tags, follower range, replies, link hosts, automated, free text), lists any-of, `not` lists none-of, every condition ANDed, plus anyO
update_viewRename, describe or refilter a saved view. `filter` replaces the whole filter.
delete_viewDelete a saved view. No mention is affected.
list_groupsThe 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.
get_groupOne keyword group by id, with how many keywords it holds.
create_groupCreate 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 (gu
update_groupRename 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
delete_groupDelete 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.
search_mentionsSearch tracked mentions for your organization. Filter by keyword, platform, status (open, ignored, done), relevant, minimum relevance, minimum confidence (0 to 1), sentiment, intent, free text (q, the post text or the author name), time range (ISO 8601), one person (personId from list_people), assig
get_mentionFetch a single mention by id, including its classification (relevance, sentiment, intents, confidence, uncertain, note).
list_mention_commentsThe 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 an
update_mentionThe 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)
add_keywordStart tracking a keyword. 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 toget
update_keywordChange a keyword: 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
duplicate_keywordCreate 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 list
get_analytics_summaryHeadline 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 7
get_analytics_seriesMentions 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 `pre
get_analytics_breakdownOne table grouped by a dimension `by`: platform, keyword, sentiment, intent, status (open, ignored, done), hour (weekday and hour of day in timezone, for "when do people talk"), person (who posted most, with followers), or subreddit (Reddit posts only: which subreddits your mentions come from). Each
get_share_of_voiceBrand 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 previ
get_reviews_reportThe 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 (bucke
list_alertsList 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.
get_alertOne alert rule by id: its filter, mode and schedule, channels and delivery stats.
delete_alertDelete an alert rule. Its channels stay and can serve other rules. Irreversible; disabling it (update_alert enabled=false) keeps the rule.
list_channelsList 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.
list_attentionWhat 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), or a channel whose last sends all failed (channel.failing). Detected once an
dismiss_attentionDismiss an attention item (att_... from list_attention): it leaves the open list and does not come back while its condition lasts.
create_alertCreate 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 dige
update_alertChange an alert: name, enabled, mode, schedule, filter (replaces the whole filter) or channelIds (replaces the whole list).
mute_authorsMute 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.
unmute_authorsUnmute 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.
list_keywordsThe 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 kind, status (active, muted by a person, paused by the wallet, noisy: paused by the noise brak
get_keywordOne 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.
get_keyword_healthIs 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 pla
delete_keywordStop 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.
whoamiThe 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.
list_membersThe 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.
get_usageThe 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 ever
get_usage_breakdownWhat 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; de
list_ledgerEvery 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
get_filtersThe 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
update_filtersChange 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 untouch
get_companyRead 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).
update_companyUpdate 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; i
list_peopleThe 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 on
get_personOne 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
update_personAnnotate 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 th
merge_peopleDeclare 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.
split_personUndo a merge: the account becomes its own person again for your organization. A merge made in a keyword group is undone with that groupId.
list_activitiesThe 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 per
log_activityRecord 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 A
delete_activityDelete 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.
get_mention_statsMention 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".