# Mencoro (oci · ghcr.io/mencoro/mencoro-mcp)

Track and manage how your brand appears in AI answers: rank, mentions, sentiment, share of voice.

- Trust score: 52/100 (low)
- Change this week: −1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.mencoro.com`: 39/100, [markdown](https://verifymcp.io/servers/com-mencoro-mencoro/api.md), [page](https://verifymcp.io/servers/com-mencoro-mencoro/api)
- npm · `@mencoro/mcp`: 92/100, [markdown](https://verifymcp.io/servers/com-mencoro-mencoro/mencoro-mcp.md), [page](https://verifymcp.io/servers/com-mencoro-mencoro/mencoro-mcp)
- oci · `ghcr.io/mencoro/mencoro-mcp`: 52/100 (this document), [markdown](https://verifymcp.io/servers/com-mencoro-mencoro/ghcr-io-mencoro-mencoro-mcp.md), [page](https://verifymcp.io/servers/com-mencoro-mencoro/ghcr-io-mencoro-mencoro-mcp)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/mencoro/mencoro-mcp`
- Version: `2.0.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 5 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 10863 tokens (~159/item across 68 items; 68 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 91/100
  - Stability check failed: the tool surface changed between 1.1.0 and 2.0.0: 3 tool removals, 1 breaking changes, 10 additions.
- **Tool Coverage**: 73/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 20% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 69 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Mencoro MCP server?

Mencoro runs locally as a container image, launched with docker run --rm -i -e MENCORO_API_KEY ghcr.io/mencoro/mencoro-mcp:2.0.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-mencoro-mencoro -- docker run --rm -i -e MENCORO_API_KEY ghcr.io/mencoro/mencoro-mcp:2.0.0
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Cursor

```json
{
  "mcpServers": {
    "com-mencoro-mencoro": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "MENCORO_API_KEY",
        "ghcr.io/mencoro/mencoro-mcp:2.0.0"
      ]
    }
  }
}
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

### VS Code

```json
{
  "servers": {
    "com-mencoro-mencoro": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "MENCORO_API_KEY",
        "ghcr.io/mencoro/mencoro-mcp:2.0.0"
      ]
    }
  }
}
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Codex

```bash
codex mcp add com-mencoro-mencoro -- docker run --rm -i -e MENCORO_API_KEY ghcr.io/mencoro/mencoro-mcp:2.0.0
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-mencoro-mencoro": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "-e",
        "MENCORO_API_KEY",
        "ghcr.io/mencoro/mencoro-mcp:2.0.0"
      ],
      "enabled": true
    }
  }
}
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Hermes

```yaml
mcp_servers:
  com-mencoro-mencoro:
    command: "docker"
    args: ["run", "--rm", "-i", "-e", "MENCORO_API_KEY", "ghcr.io/mencoro/mencoro-mcp:2.0.0"]
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Netclaw

```json
{
  "McpServers": {
    "com-mencoro-mencoro": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "-e",
        "MENCORO_API_KEY",
        "ghcr.io/mencoro/mencoro-mcp:2.0.0"
      ]
    }
  }
}
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

### Other

```json
{
  "mcpServers": {
    "com-mencoro-mencoro": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "MENCORO_API_KEY",
        "ghcr.io/mencoro/mencoro-mcp:2.0.0"
      ]
    }
  }
}
```

This image reads MENCORO_API_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 52, +1)

No change was recorded against any check on this day. Stability & Change Management went from 88 to 91.

### 2026-11-04 (score 51, −1)

No change was recorded against any check on this day. Stability & Change Management went from 94 to 88.

### 2026-10-30 (score 52, −1)

- [security regression] Stability: pass → fail
- [functional regression] Schema quality: 9270 → 10863
- [functional] Package version: 1.1.0 → 2.0.0

### 2026-10-29 (score 53, +1)

- [security] Stability: 0.97 → pass

### 2026-10-27 (score 52, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 51, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 50, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-20 (score 49, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (68)

### `mencoro_setup` (~49 tokens)

Mencoro setup instructions

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.

### `add_tracked_queries_to_clusters` (~89 tokens)

Add tracked queries to clusters

Add up to 100 tracked queries to one or more query clusters. Other cluster memberships are left alone. Each tracked query that cannot be changed is reported in "failed" without stopping the rest. Safe to retry.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array, required)
- `trackedQueryIds` (array, required)

### `apply_auto_clustering` (~220 tokens)

Apply a proposed clustering

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. In "full_regroup" mode a tracked query the proposal places also leaves every cluster the proposal did not put it in; "fill_gaps" and "add_on_top" only add. No cluster or tracked query is deleted. 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. The response lists each tracked query's resulting clusters, not the memberships removed, so 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.

Input parameters:

- `jobId` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `archive_organization` (~138 tokens)

Archive an organization

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.

Input parameters:

- `confirmationToken` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `archive_project` (~106 tokens)

Archive a project

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.

Input parameters:

- `confirmationToken` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string)

### `cancel_invitation` (~134 tokens)

Cancel an invitation

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.

Input parameters:

- `confirmationToken` (string, required)
- `invitationId` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `change_member_role` (~149 tokens)

Change a member's role

Give an organization member another role: owner, manager or viewer. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "change_member_role" 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.

Input parameters:

- `confirmationToken` (string, required)
- `memberId` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
- `role` (string, required)

### `create_clusters` (~144 tokens)

Create query clusters

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 add_tracked_queries_to_clusters, or let start_auto_clustering propose groups. Pass a fresh requestId and reuse it if you retry.

Input parameters:

- `names` (array, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `create_competitor` (~143 tokens)

Add a competitor

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. list_untracked_competitors shows the brands AI answers name that are not tracked yet. Pass a fresh requestId and reuse it if you retry.

Input parameters:

- `brandNames` (array, required)
- `name` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
- `websiteDomains` (array, required)

### `create_organization` (~130 tokens)

Create an organization

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.

Input parameters:

- `confirmationToken` (string, required)
- `name` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `create_project` (~237 tokens)

Create a project

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. Refused to a member restricted to selected projects.

Input parameters:

- `brandNames` (array, required): The names the brand is mentioned by, e.g. ["Acme", "Acme Corp"]
- `competitors` (array)
- `name` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
- `websiteDomains` (array, required): The brand's own domains, e.g. ["acme.com"]

### `create_tracked_queries` (~303 tokens)

Create tracked queries

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.

Input parameters:

- `checkFrequency` (string, required)
- `confirmationToken` (string, required)
- `countries` (array, required): ISO 3166-1 alpha-2 codes, e.g. ["US", "ES"]
- `engines` (array, required)
- `locale` (null|string): Optional two-letter language the engines should answer in
- `nPasses` (integer, required): Answers captured per check; more than 1 only for AI engines. Each pass counts as one check against your plan; a Claude pass counts as five.
- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array)
- `queryTexts` (array, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `delete_cluster` (~109 tokens)

Delete a query cluster

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.

Input parameters:

- `clusterId` (string, required)
- `confirmationToken` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string)

### `delete_competitor` (~116 tokens)

Delete a competitor

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.

Input parameters:

- `competitorId` (string, required)
- `confirmationToken` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string)

### `delete_tracked_queries` (~132 tokens)

Delete tracked queries

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 pause_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.

Input parameters:

- `confirmationToken` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string)
- `trackedQueryIds` (array, required)

### `discover_brands` (~185 tokens)

Discover more brand names

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).

Input parameters:

- `country` (null|string)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
- `shoppingEnabled` (boolean)

### `discover_keywords` (~147 tokens)

Discover search keywords

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.

Input parameters:

- `country` (null|string)
- `excludeQueries` (array)
- `input` (string, required)
- `language` (null|string)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `discover_prompts` (~150 tokens)

Discover AI prompts

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.

Input parameters:

- `country` (string, required)
- `excludeQueries` (array)
- `input` (string, required)
- `language` (null|string)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `get_available_filters` (~137 tokens)

Get available project filters

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.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)

### `get_cited_sources` (~259 tokens)

Cited domains and pages

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, claude, 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".

Input parameters:

- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (only AI engines carry citations)
- `groupBy` (string): "domain" to roll up by host, "page" to roll up by exact URL
- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)

### `get_cluster_breakdown` (~258 tokens)

Rank tracking by keyword cluster

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".

Input parameters:

- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `includeUngroupedQueries` (boolean): Sent alone, returns only the ungrouped row: the tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds that row to those clusters. Omit both for every…
- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array): restrict to these keyword clusters

### `get_competitor_cooccurrence` (~269 tokens)

Competitor co-occurrence (head-to-head)

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".

Input parameters:

- `competitorId`: optional competitor UUID to focus on a single rival; competitor UUIDs are listed by get_available_filters (competitors[].id)
- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)
- `organizationId` (string, required)
- `projectId` (string, required)

### `get_job` (~142 tokens)

Get a background job

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. A discover_prompts job usually finishes within 15 minutes and fails with error.code timed_out after about 30 minutes. A failed job carries error.code (timed_out, provider_failed, submission_failed or internal_error) and error.message, which says what to do next.

Input parameters:

- `jobId` (string, required)
- `organizationId` (string, required)

### `get_mencoro_guide` (~162 tokens)

Mencoro guide

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.

Input parameters:

- `topic` (null|string): The topic to read; omit it, or pass "index", for the list of topics.

### `get_mention_mix` (~256 tokens)

AI mention mix (type/tone/qualifier)

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".

Input parameters:

- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `organizationId` (string, required)
- `projectId` (string, required)

### `get_mention_samples` (~291 tokens)

Sample AI mention texts

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.

Input parameters:

- `competitorId`: UUID of a single competitor to filter to; competitor UUIDs are listed by get_available_filters (competitors[].id). Omit to include all competitors
- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `limit` (integer)
- `mentionType`
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `sentiment`
- `sortBy` (string)

### `get_metric_glossary` (~103 tokens)

Metric glossary

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.

Input parameters:

- `organizationId` (string, required)

### `get_organization` (~64 tokens)

Get an organization

An organization's profile, its status, the caller's own role in it, and how many active members and pending invitations it has, and how many of its projects the caller can access. Use list_projects first to find the organizationId.

Input parameters:

- `organizationId` (string, required)

### `get_organization_overview` (~145 tokens)

Organization brand overview

Latest-snapshot rank-health board across the active projects the caller can access in an organization: one row per brand (share of voice, mention rate, average mention position, positivity, tracked-query count in total and per engine family: AI, SERP, Shopping) 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".

Input parameters:

- `organizationId` (string, required)

### `get_project` (~62 tokens)

Get a project

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).

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)

### `get_project_rank_tracking_stats` (~278 tokens)

Project rank-tracking overview

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".

Input parameters:

- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `includeUngroupedQueries` (boolean): Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries.
- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array): restrict to these keyword clusters

### `get_query_movers` (~277 tokens)

Biggest tracked-query movers

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".

Input parameters:

- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `sortBy` (string): which trend delta to rank by
- `sortOrder` (string): desc for top gainers, asc for top losers

### `get_rank_tracking_time_series` (~305 tokens)

Rank-tracking time series

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".

Input parameters:

- `competitorIds` (array): UUIDs of competitors to add as extra series; competitor UUIDs are listed by get_available_filters (competitors[].id)
- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `granularity` (string)
- `includeUngroupedQueries` (boolean): Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries.
- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array): restrict to these keyword clusters

### `get_sentiment_breakdown` (~277 tokens)

AI mention sentiment breakdown

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".

Input parameters:

- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `includeUngroupedQueries` (boolean): Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries.
- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array): restrict to these keyword clusters

### `get_share_of_voice_formula` (~80 tokens)

Share-of-voice formula constants

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.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)

### `get_tracked_query` (~73 tokens)

Get a tracked query

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.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)
- `trackedQueryId` (string, required)

### `get_tracked_query_matches` (~162 tokens)

Get a tracked query's matches

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.

Input parameters:

- `dateFrom` (null|string)
- `dateTo` (null|string)
- `kind` (string, required)
- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `sortOrder` (string)
- `trackedQueryId` (string, required)

### `get_tracked_query_time_series` (~210 tokens)

Single tracked-query time series

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".

Input parameters:

- `competitorIds` (array): UUIDs of competitors to add as extra series; competitor UUIDs are listed by get_available_filters (competitors[].id)
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `granularity` (string)
- `organizationId` (string, required)
- `projectId` (string, required)
- `trackedQueryId` (string, required): a tracked query UUID from search_tracked_queries (items[].id)

### `get_tracking_coverage` (~135 tokens)

Tracking coverage & staleness

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".

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)

### `get_usage` (~123 tokens)

Get plan and usage

An organization's subscription, how many tracked queries its projects the caller can access have, 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. For a member restricted to selected projects, the plan, billing cycle, check budget, consumption and deactivation reason in "subscription" are null too. Use it before creating tracked queries or raising check frequency, to stay within the plan.

Input parameters:

- `organizationId` (string, required)

### `invite_member` (~251 tokens)

Invite a member

Invite someone to the organization by email with a role (owner, manager or viewer) and, optionally, the projects they will reach (projectAccess); 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.

Input parameters:

- `confirmationToken` (string, required)
- `email` (string, required)
- `organizationId` (string, required)
- `projectAccess` (object): Optional. The projects the invitee will reach once they accept: {"mode": "all"}, the default, or {"mode": "selected", "projectIds": [...]} with 1 to 500 distinct project ids of this organization from…
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
- `role` (string, required)

### `list_ai_responses` (~153 tokens)

List captured AI answers

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.

Input parameters:

- `dateFrom` (null|string)
- `dateTo` (null|string)
- `engines` (array)
- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `sortOrder` (string)
- `trackedQueryId` (null|string)

### `list_clusters` (~67 tokens)

List query clusters

A project's query clusters (the groups its tracked queries are organized in), by name, with their ids.

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `sortOrder` (string)

### `list_keyword_listings` (~276 tokens)

List keyword performance

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). A variant not checked in the range contributes its latest earlier position; carriedPositions says which position figures were carried and from when. Filter by engine, country, cluster, status, check frequency, passes or text; sort by any metric. The keyword-level view of a project.

Input parameters:

- `checkFrequencies` (array)
- `countries` (array)
- `dateFrom` (string, required)
- `dateTo` (string, required)
- `engines` (array)
- `includeUngroupedQueries` (boolean): Sent alone, restricts to keywords with variants that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all keywords.
- `limit` (integer)
- `nPasses` (array)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array)
- `search` (null|string)
- `sortBy` (string)
- `sortOrder` (string)
- `status` (null|string)

### `list_members` (~94 tokens)

List organization members

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 change_member_role, suspend_member and reactivate_member take.

Input parameters:

- `includeInvitations` (boolean)
- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)

### `list_projects` (~46 tokens)

List organizations and projects

List every organization the caller belongs to and the active projects they can access in it. Call this FIRST: the returned (organizationId, projectId) pairs are required by every other tool.

### `list_search_snapshots` (~149 tokens)

List captured search results

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.

Input parameters:

- `dateFrom` (null|string)
- `dateTo` (null|string)
- `kind` (string, required)
- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `sortOrder` (string)
- `trackedQueryId` (null|string)

### `list_untracked_competitors` (~248 tokens)

Brands the AI answers name that you do not track

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.

Input parameters:

- `countries` (array): ISO-3166 alpha-2 country codes; a project's configured codes are listed by get_available_filters
- `dateFrom` (null|string)
- `dateTo` (null|string)
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)
- `limit` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)

### `pause_tracked_queries` (~108 tokens)

Pause tracked queries

Pause up to 100 tracked queries: their checks stop until resume_tracked_queries restarts them, so they spend no budget meanwhile; use get_usage to see the effect. Checks skipped while paused are never made up later, and pausing also cancels a check still in progress. Each one that cannot be paused is reported in "failed". Safe to retry.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)
- `trackedQueryIds` (array, required)

### `preview_operation` (~135 tokens)

Preview an operation before running it

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.

Input parameters:

- `arguments` (object, required): The arguments the write tool would be called with, without confirmationToken and requestId.
- `tool` (string, required)

### `reactivate_member` (~140 tokens)

Reactivate a member

Give a suspended member their access to the organization back. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "reactivate_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.

Input parameters:

- `confirmationToken` (string, required)
- `memberId` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `remove_tracked_queries_from_clusters` (~118 tokens)

Remove tracked queries from clusters

Take up to 100 tracked queries out of one or more query clusters. Other cluster memberships are left alone. Removing also takes the tracked query's past results out of that cluster's reports until it is added back with add_tracked_queries_to_clusters. Each tracked query that cannot be changed is reported in "failed" without stopping the rest. Safe to retry.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)
- `queryClusterIds` (array, required)
- `trackedQueryIds` (array, required)

### `rename_cluster` (~63 tokens)

Rename a query cluster

Rename a query cluster. The name is stored lower-cased and must be unique in the project. Safe to retry.

Input parameters:

- `clusterId` (string, required)
- `name` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)

### `report_ai_response` (~121 tokens)

Report a wrongly analysed AI answer

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.

Input parameters:

- `aiResponseId` (string, required)
- `comment` (null|string)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string)
- `trackedQueryId` (string, required)
- `type` (string, required)

### `restore_organization` (~114 tokens)

Restore an organization

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.

Input parameters:

- `confirmationToken` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `restore_project` (~50 tokens)

Restore an archived project

Bring an archived project back: it reappears in the project list and its active tracked queries are checked again on their schedule.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)

### `resume_tracked_queries` (~88 tokens)

Resume tracked queries

Restart the checks of up to 100 paused tracked queries; they spend budget again, so use get_usage to see the effect. Checks skipped while they were paused are not made up. Each one that cannot be resumed is reported in "failed". Safe to retry.

Input parameters:

- `organizationId` (string, required)
- `projectId` (string, required)
- `trackedQueryIds` (array, required)

### `run_checks` (~188 tokens)

Check tracked queries now

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 (each pass counts as one check; a Claude pass counts as five). 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.

Input parameters:

- `all` (boolean)
- `confirmationToken` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string)
- `trackedQueryIds` (array)

### `search_tracked_queries` (~249 tokens)

Search tracked queries

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".

Input parameters:

- `countries` (array): ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
- `engines` (array): allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
- `limit` (integer)
- `offset` (integer)
- `organizationId` (string, required)
- `projectId` (string, required)
- `search`
- `sortBy` (string)
- `sortOrder` (string)
- `status`

### `set_member_project_access` (~262 tokens)

Set a member's project access

Set which projects of the organization a member reaches: every project (mode "all") or only the projects in projectIds (mode "selected"); a project outside a selection answers as if it did not exist. It applies from the member's next request, including through their API keys and MCP connections. An owner always reaches every project and cannot be limited. memberId is the member id from list_members, not the user id; projectIds come from list_projects. Requires a confirmationToken: call preview_operation with tool "set_member_project_access" 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.

Input parameters:

- `confirmationToken` (string, required)
- `memberId` (string, required)
- `mode` (string, required)
- `organizationId` (string, required)
- `projectIds` (array|null): The projects a "selected" access reaches: at least one and at most 500 distinct projects, all of this organization; a repeated id counts once. Leave it out for "all".
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `set_tracked_query_check_frequency` (~106 tokens)

Set how often tracked queries are checked

Change how often up to 100 tracked queries are checked: daily, weekly or monthly. A lower frequency spends less budget; use get_usage to see the effect. Checks skipped at a lower frequency are never made up later. Each one that cannot be changed is reported in "failed". Safe to retry.

Input parameters:

- `checkFrequency` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `trackedQueryIds` (array, required)

### `set_tracked_query_passes` (~115 tokens)

Set how many answers each check captures

Change how many answers each check of up to 100 tracked queries captures (nPasses; above 1 only for AI engines). Fewer passes spend less budget; use get_usage to see the effect. Passes no longer captured are never made up later. Each one that cannot be changed is reported in "failed". Safe to retry.

Input parameters:

- `nPasses` (integer, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `trackedQueryIds` (array, required)

### `start_auto_clustering` (~180 tokens)

Propose query clusters automatically

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.

Input parameters:

- `mode` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
- `restrictToExistingClusters` (boolean)
- `trackedQueryIds` (array, required)

### `suggest_brand_names` (~148 tokens)

Suggest brand names

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. Refused to a member restricted to selected projects.

Input parameters:

- `country` (null|string)
- `enteredBrandNames` (array): Names the user already knows the brand by
- `name` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
- `websiteDomains` (array, required)

### `suspend_member` (~150 tokens)

Suspend a member

Suspend an organization member: they lose access immediately but stay a member, and reactivate_member gives it back. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "suspend_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.

Input parameters:

- `confirmationToken` (string, required)
- `memberId` (string, required)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `update_competitor` (~128 tokens)

Update a competitor

Replace a competitor's name, website domains and brand names. Replaces all three: pass every domain and name the competitor should keep. A domain or brand name left out is removed, and later checks no longer match on it; results already recorded are not re-matched or deleted. Show the user the full new lists before calling. Safe to retry.

Input parameters:

- `brandNames` (array, required)
- `competitorId` (string, required)
- `name` (string, required)
- `organizationId` (string, required)
- `projectId` (string, required)
- `websiteDomains` (array, required)

### `update_organization` (~167 tokens)

Update an organization

Change the name, description or contact email of an organization; arguments left out are unchanged. A value passed overwrites the current one, and no tool returns the old value afterwards. 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.

Input parameters:

- `confirmationToken` (string, required)
- `contactEmail` (null|string)
- `description` (null|string)
- `name` (null|string)
- `organizationId` (string, required)
- `requestId` (null|string): Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.

### `update_project` (~140 tokens)

Update a project

Rename a project, replace the website domains and brand names it is monitored for, or both. A rename alone removes nothing. brandProfile replaces both lists entirely: pass every domain and name the project should keep. A domain or brand name left out is removed, and later checks no longer match on it; results already recorded are not re-matched or deleted. Show the user the full new lists before calling. Safe to retry.

Input parameters:

- `brandProfile` (object|null): Replaces the website domains and brand names the project is monitored for.
- `name` (null|string)
- `organizationId` (string, required)
- `projectId` (string, required)

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/com-mencoro-mencoro/ghcr-io-mencoro-mencoro-mcp#diagnostics

## Score history

- 2026-11-05: 52
- 2026-11-04: 51
- 2026-11-03: 52
- 2026-11-02: 52
- 2026-11-01: 52
- 2026-10-31: 52
- 2026-10-30: 52
- 2026-10-29: 53
- 2026-10-28: 52
- 2026-10-27: 52
- 2026-10-26: 51
- 2026-10-25: 51
- 2026-10-24: 50
- 2026-10-23: 50
- 2026-10-22: 50
- 2026-10-21: 49
- 2026-10-20: 49
- 2026-10-19: 48
- 2026-10-18: 48
- 2026-10-17: 47
- 2026-10-16: 47
- 2026-10-15: 46
- 2026-10-14: 46
- 2026-10-13: 45
- 2026-10-12: 45
- 2026-10-10: 44
- 2026-10-09: 43
- 2026-10-07: 43
- 2026-10-06: 39
- 2026-10-04: 39

## Common questions

### What is the Mencoro MCP server?

Mencoro is an MCP server listed in the public MCP registry as com.mencoro/mencoro. Track and manage how your brand appears in AI answers: rank, mentions, sentiment, share of voice. This page covers its container image (ghcr.io/mencoro/mencoro-mcp).

### Is the Mencoro MCP server safe to use?

Mencoro scores 52 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Mencoro MCP server expose?

Mencoro exposes 68 tools: mencoro_setup, add_tracked_queries_to_clusters, apply_auto_clustering, archive_organization, archive_project, and 63 more. Their descriptions and schemas cost roughly 10,803 tokens of context every time the server is loaded.

### Is the Mencoro MCP server still maintained?

Mencoro is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Mencoro MCP server under?

Mencoro declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the Mencoro MCP server?

VerifyMCP ran 12 checks on Mencoro, covering Source repository, Provenance, License, Maintenance and 8 more. 4 items could not be completed, a gap on our side rather than a finding about Mencoro: Malware scan, Known CVEs, Install scripts and Dependency health. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to a container image, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- GitHub Container Registry: https://ghcr.io/mencoro/mencoro-mcp
- Repository: https://github.com/mencoro/mencoro-mcp
- Website: https://mencoro.com/features/mcp-server/
- Changelog RSS feed: https://verifymcp.io/servers/com-mencoro-mencoro/ghcr-io-mencoro-mencoro-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-mencoro-mencoro/ghcr-io-mencoro-mencoro-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/com-mencoro-mencoro/ghcr-io-mencoro-mencoro-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-mencoro-mencoro/ghcr-io-mencoro-mencoro-mcp
