Mencoro MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MENCORO_API_KEY | No | Personal access token. Without it the bridge starts anyway and serves a single `mencoro_setup` tool explaining how to get one. | |
| MENCORO_MCP_URL | No | Upstream endpoint. Defaults to https://api.mencoro.com/mcp. | https://api.mencoro.com/mcp |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mencoro_setupA | Explain how to finish connecting this bridge to Mencoro. The bridge has no API token, so no project, ranking, mention or share-of-voice data can be read until one is configured. |
| apply_auto_clusteringA | Apply the grouping a completed start_auto_clustering job proposed: creates the clusters it named and moves the tracked queries into them, as the job's mode said. Cluster names are lower-cased like create_clusters, and a proposed name that matches an existing cluster reuses it instead of creating a second one. Show the proposal (get_job) to the user first. Pass a fresh requestId and reuse it if you retry, so a retry never applies twice. |
| archive_organizationA | Archive an organization: its projects are archived and stop being checked, its pending invitations are cancelled, and its subscription is cancelled at the end of the billing period. Requires a confirmationToken: call preview_operation with tool "archive_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role. |
| archive_projectA | Archive a project: every one of its tracked queries stops being checked and it disappears from the project list; restore_project brings it back. Requires a confirmationToken: call preview_operation with tool "archive_project" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. |
| cancel_invitationA | Cancel a pending invitation; its link stops working. Find ids with list_members and includeInvitations. Requires a confirmationToken: call preview_operation with tool "cancel_invitation" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role. |
| create_clustersA | Create up to 100 query clusters in a project, the groups tracked queries are organized in. Names are stored lower-cased and must be unique in the project; each name that cannot be created is reported in "failed" without stopping the rest. Assign tracked queries with set_tracked_query_clusters, or let start_auto_clustering propose groups. Pass a fresh requestId and reuse it if you retry. |
| create_competitorA | Add a competitor to a project, with its website domains and the names it is mentioned by; from then on its mentions and rankings are tracked beside the brand's. discover_brands can propose competitors. Pass a fresh requestId and reuse it if you retry. |
| create_organizationA | Create a new organization, owned by the caller. Only with a Mencoro connection that is not limited to one organization. Requires a confirmationToken: call preview_operation with tool "create_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role. |
| create_projectA | Create a project that monitors a brand: its website domains, the brand names to look for, and optionally its competitors. Tracked queries are added afterwards with create_tracked_queries. Before calling it, propose everything to the user at once: brand names from suggest_brand_names, and competitors you suggest with their websites (no tool finds competitors; suggest_brand_names finds the names each one goes by). After the first checks, list_untracked_competitors shows other brands the answers name. Pass a fresh requestId and reuse it if you retry, so a retry never creates a second project. |
| create_tracked_queriesA | Start tracking queries: every combination of queryTexts x engines x countries (at most 100) becomes a tracked query, checked now and then on checkFrequency with nPasses passes, each check spending budget. Combinations the project already tracks, repeated ones and Google AI Mode in unsupported countries are skipped and reported. Requires a confirmationToken: call preview_operation with tool "create_tracked_queries" and these arguments first, show the returned plan (what is created, what it costs) to the user, and call this tool only after the user explicitly agrees. Pass a fresh requestId and reuse it if you retry. |
| delete_clusterA | Delete a query cluster. Its tracked queries are not deleted; they only leave the cluster. Irreversible. Requires a confirmationToken: call preview_operation with tool "delete_cluster" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. |
| delete_competitorA | Remove a competitor from a project, together with every mention, search result and shopping result recorded for it. Irreversible. Requires a confirmationToken: call preview_operation with tool "delete_competitor" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. |
| delete_tracked_queriesA | Delete up to 100 tracked queries, together with their captured answers, matches and metrics history. Irreversible; to stop spending budget without losing history, pause them with update_tracked_queries instead. Requires a confirmationToken: call preview_operation with tool "delete_tracked_queries" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. |
| discover_brandsA | Start a background job that finds other names the project's brand and each of its existing competitors go by in AI answers and search results (aliases, product and store names). It does not find new competitors. Poll get_job for the result, show it to the user, and add the chosen names with update_project (the brand) or update_competitor (a competitor, by competitorId), passing the full list including the names already there. shoppingEnabled also looks at Google Shopping; country narrows to one market (ISO 3166-1 alpha-2). |
| discover_keywordsA | Start a background job that proposes search keywords for a project from a seed (a topic, a product, a URL). excludeQueries leaves out ones already tracked. Poll get_job for the result, review it with the user, then track the chosen ones with create_tracked_queries. Requires an active subscription. |
| discover_promptsA | Start a background job that proposes the questions people ask AI assistants about a topic in one country - the prompts worth tracking on AI engines. excludeQueries leaves out ones already tracked. Poll get_job for the result, review it with the user, then track the chosen ones with create_tracked_queries. Requires an active subscription. |
| get_available_filtersA | Discover the engines, countries, keyword clusters and competitors configured on a project so subsequent metric tools can be called with valid filter values. Engines and countries are returned as {code, label} (e.g. {"code":"chatgpt","label":"ChatGPT"}, {"code":"US","label":"United States"}); clusters and competitors as {id, name}. Always pass the "code"/"id" (never the label/name) to the other tools' engines / countries / queryClusterIds / competitorId(s) parameters. Call this before filtering. |
| get_cited_sourcesA | The domains (groupBy=domain) or pages (groupBy=page) most cited across a project's AI answers in a date window — the sources the answer engines drew on. Per source: how many times it was cited, how many distinct answers and tracked queries it appeared in, and its average rank within the citation lists. The list is UNFILTERED by ownership: it includes the brand's, competitors' and third-party sources. Only AI answer engines (chatgpt, perplexity, google_ai_overview, google_ai_mode) produce citations. Dates must fall within the data retention window. Answers questions like "which websites and pages does the AI cite or quote for me versus competitors". |
| get_cluster_breakdownA | Rank-tracking metrics broken down per keyword cluster for a project over a date window: one row per cluster with its positions, share of voice and sentiment. Dates must fall within the data retention window. Answers questions like "which keyword clusters are strongest or weakest" or "how does my niche compare to my generic queries". |
| get_competitor_cooccurrenceA | For the AI answers where the brand and a competitor are BOTH mentioned, compares who is named higher. One row per tracked competitor: how many answers they co-appear in, how often the brand out-ranks / loses to / ties them (by best mention position), the win rate, the average positions, and one representative shared query. Optionally focus a single competitor via competitorId. Tracked competitors only. Dates must fall within the data retention window. Answers questions like "who wins when we both appear", "do I outrank competitor X", "who is mentioned first". |
| get_jobA | The status and, once completed, the result of a background job started by discover_brands, suggest_brand_names, discover_keywords, discover_prompts or start_auto_clustering. Poll it every few seconds until status is "completed" or "failed"; do not start the job again while it is pending or running. |
| get_mencoro_guideA | Answer questions about Mencoro itself from its public guide: what it tracks, how a check runs, what counts as a mention, how Coverage, Favorability, share of voice, positions and stability are calculated, how checks, plans and frequencies work, reliability and limits, how to use this MCP server (permissions, confirmations), how to analyse results and find what to improve, pairing with Ahrefs, Semrush, Search Console or Google Analytics MCP servers, and the REST API. Call it without a topic for the index, then with the topic that answers the question. No account data; works without signing in. |
| get_mention_mixA | The project brand's own AI text-mention counts over a date window grouped by type, tone and qualifier; competitors (tracked or untracked) and unrelated brands are excluded. Counts are raw per-pass rows and leave out cited links, so they show mention composition, not the exact share-of-voice inputs (share of voice averages each check over its passes and also weights links). Use to understand mention composition. For the positive/neutral/negative sentiment split use get_sentiment_breakdown; to read the actual mention texts use get_mention_samples. Dates must fall within the data retention window. Answers questions like "am I recommended or just listed" or "break my mentions down by type". |
| get_mention_samplesA | Paginated sample of the raw AI mention texts themselves, for qualitative review and verifying sentiment labels. Use to READ individual mentions. For the aggregate sentiment split use get_sentiment_breakdown; for the brand's own mention counts by type, tone and qualifier use get_mention_mix. Filterable by engine, sentiment, mention type and competitor. Dates must fall within the data retention window. limit is 1-50 (default 20). Answers questions like "show or export the actual AI mention texts" for a query. |
| get_metric_glossaryA | Map a plain-language or unfamiliar request to the right Mencoro metric and tool. Returns each metric with its everyday synonyms, unit, value range, whether higher or lower is better, the tool that serves it, and example questions. Call this first when a request is vague, non-technical, phrased in another language, or uses wording that does not match a tool name. Static reference; no project data. |
| get_organizationA | An organization's profile, its status, the caller's own role in it, and how many active members, projects and pending invitations it has. Use list_projects first to find the organizationId. |
| get_organization_overviewA | Latest-snapshot rank-health board across all active projects in an organization: one row per brand (share of voice, mention rate, average mention position, positivity, tracked-query count) ranked by share of voice, plus an organization-level aggregate. This is a current-state snapshot and takes NO date window; for date-ranged comparison, call the per-project tools (e.g. get_project_rank_tracking_stats) for each project id returned here. Answers questions like "give me a company-wide summary of share of voice and sentiment across all my projects". |
| get_projectB | A project's name and status, the website domains and brand names it is monitored for, and all of its competitors with their ids (update_competitor and delete_competitor take them). |
| get_project_rank_tracking_statsA | Aggregated rank-tracking summary for a project over a date window: average positions, trends, share of voice (own and per competitor), sentiment split, mention/SERP/shopping rates, and position-distribution buckets. This is the project overview; prefer it before the per-cluster or time-series tools. Dates must fall within the data retention window. Answers questions like "how visible is my brand", "am I ahead of competitors", "how positive is my coverage". |
| get_query_moversA | Ranks a project's tracked queries by how much a metric changed between the given window and the immediately preceding window of equal length — the biggest gainers and losers. Each row is one tracked query (a single engine + country) with its current position/share/sentiment and the signed trend delta (positive = improved). Sort by one of the trend keys; sortOrder desc = top gainers, asc = top losers. Dates must fall within the data retention window. Answers questions like "which queries moved the most" or "my biggest gains and drops versus last period". |
| get_rank_tracking_time_seriesA | Time series of rank-tracking metrics for a project across a date window, bucketed by granularity (daily, weekly or monthly). Prefer weekly or monthly for long windows to keep the response compact. Optionally includes per-competitor lines. Dates must fall within the data retention window. Answers questions like "what changed in my AI visibility" or "show my share-of-voice trend split by engine". |
| get_sentiment_breakdownA | Positive/neutral/negative sentiment split of the brand's AI mentions over a date window, per AI engine and per competitor. Use for tone/sentiment questions. For the brand's own mention counts by type, tone and qualifier use get_mention_mix; to read the actual mention texts use get_mention_samples. Dates must fall within the data retention window. Answers questions like "is anything negative being said about my brand" or "how positive is my coverage". |
| get_share_of_voice_formulaB | The constants behind the share-of-voice score: per-mention-type base weights and tone/qualifier multipliers. Use this to explain how the share-of-voice metric is derived. Global (not project-specific), but scoped to a project you can access. |
| get_tracked_queryB | One tracked query's settings: its text, engine, country, status, check frequency, passes per check, clusters and when it was last checked. Find ids with search_tracked_queries. |
| get_tracked_query_matchesA | The individual results behind one tracked query's metrics. kind "mention": each time the brand or a competitor was mentioned in an AI answer, with position, sentiment and the context it appeared in. kind "serp": each time one of their domains ranked in a search result, with its position. Newest first by default; dates are YYYY-MM-DD and default to the whole retention window. |
| get_tracked_query_time_seriesA | Time series of rank-tracking metrics for ONE tracked query across a date window, bucketed by granularity (daily, weekly or monthly). The tracked query fixes the engine and country, so those are not parameters. Use search_tracked_queries to find a trackedQueryId. Optionally includes per-competitor lines. Prefer weekly or monthly for long windows. Dates must fall within the data retention window. Answers questions like "show the share-of-voice and position history of this one query over the last N months". |
| get_tracking_coverageA | Coverage summary for a project's tracked queries: counts of total, active, paused, never-checked, and overdue (past their check-frequency interval) queries, plus a sample of the most-overdue ones. Answers "what is stale / not being tracked" in one call. Never-checked and overdue are scoped to active queries. This is a current-state snapshot and takes no date window. Answers questions like "what is stale or not being monitored", "which queries are overdue, paused, or never checked", "how fresh is my data". |
| get_usageA | An organization's subscription, how many tracked queries it has, and how many checks they are projected to run per month. Plan entitlements (tracked-query and check limits) are included for owners only, as in the web app; for other members "entitlements" is null. Use it before creating tracked queries or raising check frequency, to stay within the plan. |
| invite_memberA | Invite someone to the organization by email with a role (owner, manager or viewer); they get an email to accept. Inviting an address that already belongs to a member creates nothing and says so. Requires a confirmationToken: call preview_operation with tool "invite_member" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role. |
| list_ai_responsesA | The AI answers captured for a project's tracked queries - the full answer text, the engine, when it was captured, and the sources it cited. Filter by engine, by one tracked query, or by capture date (YYYY-MM-DD). Newest first by default. Use it to read what an engine actually said; for aggregates use the metric tools. |
| list_clustersC | A project's query clusters (the groups its tracked queries are organized in), by name, with their ids. |
| list_keyword_listingsA | One row per tracked query text across all its engine and country variants, with its share of voice, positivity, mention, link, search and shopping positions over the date range (YYYY-MM-DD, inclusive). Filter by engine, country, cluster, status, check frequency, passes or text; sort by any metric. The keyword-level view of a project. |
| list_membersA | The members of an organization, oldest first, with their role and state; optionally also its pending invitations. Owners only, as in the web app. The member "id" (not the userId) is what update_member takes. |
| list_projectsA | List every organization the caller belongs to and its active projects. Call this FIRST: the returned (organizationId, projectId) pairs are required by every other tool. |
| list_search_snapshotsA | The search result pages captured for a project's tracked queries. kind "serp": Google search results with each result's position, title and URL. kind "shopping": Google Shopping results with each offer's position, merchant and price. Filter by one tracked query or by capture date (YYYY-MM-DD). Newest first by default. |
| list_untracked_competitorsA | The brands a project's AI answers name that are not tracked as competitors (another brand offering the same thing), most-seen first: in how many answers and tracked queries, how often, their average position among the brands named, one query that named them, and when they were last seen. They count in no metric until tracked, so this is where to find competitors worth adding with create_competitor (their websites are not known here; confirm them with the user). Needs checks to have run; after a project is created its first checks run straight away. dateFrom and dateTo (YYYY-MM-DD) default to the last 30 days. |
| preview_operationA | Describe exactly what a confirmable write tool would do and get the confirmationToken it requires. Pass the name of the write tool as "tool" and the arguments you would pass it (without confirmationToken and requestId) as "arguments". Show the returned plan to the user and wait for an explicit yes before calling the tool with the same arguments and this confirmationToken. The token is single-use, expires after a few minutes, and is refused if anything the plan describes has changed. |
| rename_clusterA | Rename a query cluster. The name is stored lower-cased and must be unique in the project. Safe to retry. |
| report_ai_responseA | Flag a captured AI answer whose analysis is wrong - most often a brand or competitor mention that was missed - so Mencoro reviews it. type "missed_mention" or "other"; comment says what is wrong. Find the ids with list_ai_responses. |
| restore_organizationA | Bring an archived organization back to active. Requires a confirmationToken: call preview_operation with tool "restore_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role. |
| restore_projectA | Bring an archived project back: it reappears in the project list and its active tracked queries are checked again on their schedule. |
| run_checksA | Check tracked queries now instead of waiting for their schedule: name up to 100 in trackedQueryIds, or pass all: true for every active tracked query of the project, however recently it was checked (a query whose check is still running is skipped). Each check spends budget (one per pass). Requires a confirmationToken: call preview_operation with tool "run_checks" and these arguments first, show the returned plan (which checks run, what they cost) to the user, and call this tool only after the user explicitly agrees. Results arrive over the next minutes; read them with the analytics tools. |
| search_tracked_queriesA | Search and paginate the tracked queries (keywords) of a project with their latest rank positions and metrics. Filter by status (active/paused), engines, countries and a free-text search. Sort by one of: queryText, lastSerpPosition, lastMentionPosition, lastShoppingPosition, lastShareOfVoice, lastPositivityIndex, lastMentionCount, lastCheckedAt. limit is 1-100 (default 20). Answers questions like "list my top queries by share of voice" or "find a specific tracked query". |
| set_tracked_query_clustersA | Add up to 100 tracked queries to one or more query clusters ("add"), or take them out ("remove"). Other cluster memberships are left alone. Each tracked query that cannot be changed is reported in "failed" without stopping the rest. Safe to retry. |
| start_auto_clusteringA | Start a background job that proposes how to group up to 500 tracked queries into clusters. mode "fill_gaps" places only queries that have no cluster yet; "add_on_top" adds clusters without touching existing memberships; "full_regroup" proposes a fresh grouping of every query. restrictToExistingClusters only uses the project's current clusters. Nothing changes until apply_auto_clustering: poll get_job, show the proposal to the user, then apply it. Requires an active subscription. |
| suggest_brand_namesA | Start a background job that proposes the names a brand is mentioned by, from its name and website - the first step of setting up a project, before it exists. Poll get_job for the result and confirm the names with the user before create_project. |
| update_competitorA | Replace a competitor's name, website domains and brand names. Replaces all three: pass every domain and name the competitor should keep. Safe to retry. |
| update_memberA | Change an organization member: operation "change_role" gives them another role (pass role), "suspend" takes their access away without removing them, "reactivate" gives it back. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "update_member" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role. |
| update_organizationA | Change the name, description or contact email of an organization; arguments left out are unchanged. Requires a confirmationToken: call preview_operation with tool "update_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role. |
| update_projectA | Rename a project, replace the website domains and brand names it is monitored for, or both. brandProfile replaces both lists entirely: pass every domain and name the project should keep. Safe to retry. |
| update_tracked_queriesA | Change up to 100 tracked queries at once. operation "pause" stops their checks, "resume" restarts them, "set_check_frequency" changes how often they are checked (pass checkFrequency), "set_passes" changes how many answers each check captures (pass nPasses; above 1 only for AI engines). Lower frequency or fewer passes spend less budget; use get_usage to see the effect. Each one that cannot be changed is reported in "failed". Safe to retry. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| biggest_movers | The tracked queries that moved the most versus the previous period. |
| brand_ai_overview | Board-ready summary of how a brand/project is showing up in AI answers this period. |
| cited_sources | Which websites and pages the AI cites when it answers for a brand. |
| competitor_standing | Whether a brand is ahead of or behind its competitors, and where it is losing ground. |
| coverage_health | How fresh a project's data is and which tracked queries are stale, overdue, paused or never checked. |
| cross_source_analysis | Combine Mencoro with the Ahrefs, Semrush, Google Search Console or Google Analytics MCP servers the assistant has connected: outreach targets, demand, ranking without being mentioned, AI referral traffic. |
| expand_query_set | Find new prompts or keywords worth tracking for a project and add the ones the user picks. |
| head_to_head | Queries where a brand and a named competitor appear in the same AI answer, and who wins. |
| negative_mentions | Whether anything negative is being said about a brand, with the offending mentions. |
| optimization_opportunities | A prioritised list of what to improve for a project, from where competitors win, the sources AI answers cite, sentiment and coverage gaps. |
| organization_overview | Combined share of voice and sentiment across every project in an organization. |
| query_history | Share-of-voice and position history of one specific tracked query over time. |
| reorganise_clusters | Let Mencoro propose how to group a project's tracked queries into clusters, review the proposal, and apply it. |
| results_review | Evaluate whether a change (new content, PR, a launch, an optimization) moved AI visibility, comparing before and after against a baseline. |
| set_up_project | Start monitoring a brand from its website in a short conversation: gather what is missing, propose brand names and competitors together, create the project once the user confirms, then propose the first prompts to track. |
| sov_explainer | Explain how a brand's Share of Voice is computed — the weights and multipliers. |
| top_queries | A brand's best tracked queries by share of voice, with sentiment. |
| tune_tracking_costs | Review what a project's tracked queries cost in checks and propose frequency, pass or pause changes to fit the plan. |
| visibility_report | A structured AI-visibility report for a project over a period, against the previous period, ending with recommended actions. |
| whats_changed | What changed in a brand's AI visibility over a recent period. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 61 tools
Despite 61 tools, descriptions are unusually explicit, with many tools cross-referencing their neighbors (e.g. get_mention_mix vs get_sentiment_breakdown vs get_mention_samples, project-level vs per-query time series) to steer selection. A few boundaries remain soft—list_keyword_listings, search_tracked_queries and get_project_rank_tracking_stats all surface overlapping query metrics—but most purposes are clearly distinct.
Nearly all names follow a snake_case verb_noun pattern (get_*, list_*, create_*, update_*, delete_*, restore_*, archive_*, run_*, discover_*). Minor deviations exist where the noun is dropped or a different verb is chosen (search_tracked_queries instead of list_, preview_operation, mencoro_setup), but the convention is broadly predictable.
61 tools is far beyond the 25-tool threshold, and many are narrow single-metric readers (get_share_of_voice_formula, get_metric_glossary, get_cluster_breakdown, etc.) that could be consolidated into fewer parameterized tools. The domain is genuinely broad, but the surface is too heavy for an agent to navigate efficiently.
The surface covers full lifecycles for organizations, projects, competitors, clusters, tracked queries, members and invitations, plus analytics, background jobs, feedback reporting and a confirmation/preview flow. Almost no obvious dead ends remain; archive/restore and pause/resume cover non-destructive alternatives.