Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

com.cituna/cituna-mcp

NPM · CITUNA-MCP · SCANNED SEP 20

Track how 6 AI engines cite your brand, daily, with live Google Search Console.

Available components

+1 this week 84 Trust /100
Trust breakdown (7 categories)

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. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability79
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6295 tokens (~262/item across 24 items; 24 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 24 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the com.cituna/cituna-mcp server?

com.cituna/cituna-mcp runs locally as an npm package, launched with npx -y cituna-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · cituna-mcp

# add to Claude Code
claude mcp add com-cituna-cituna-mcp -- npx -y cituna-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "com-cituna-cituna-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "cituna-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-cituna-cituna-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "cituna-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-cituna-cituna-mcp -- npx -y cituna-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-cituna-cituna-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "cituna-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-cituna-cituna-mcp --command npx --arg -y --arg cituna-mcp
# ~/.hermes/config.yaml
mcp_servers:
  com-cituna-cituna-mcp:
    command: "npx"
    args: ["-y", "cituna-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-cituna-cituna-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "cituna-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-cituna-cituna-mcp -t stdio -c npx -a -y cituna-mcp
// mcp.json
{
  "mcpServers": {
    "com-cituna-cituna-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "cituna-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +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.

  • 18 Sept 26 +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.

  • 17 Sept 26 −3
    • Stability: pass → 0.83 functional
  • 16 Sept 26 +1
    • Stability: 0.97 → pass security
  • 14 Sept 26 +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.

  • 12 Sept 26 +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.

  • 10 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 9 Sept 26 +1
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/cituna-mcp@1.5.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 24 exposed · ~5,135 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
competitor_discovery ~198

Rivals showing up in YOUR data that you are not tracking. Cross-references two sources you already have against your tracked competitor list: the brands the six engines named while answering your prompts (from your latest audit) and the vendor-shaped terms people search before landing on you (from Search Console). Anything appearing in either and missing from the list comes back ranked by how much evidence there is, with where it was seen. Worth running monthly: a competitor list goes stale silently, and the first sign a new rival matters is usually that an engine starts naming them in answers to your own buyer questions. Free, reads stored data plus one Search Console read. Requires a signed-in account.

NameTypeReqDescription
daysintegerSearch Console window for query evidence. Default 90.
domainstringyesBare domain, e.g. 'acme.com'.
minEvidenceintegerIgnore candidates below this combined evidence score. Default 2.

No output schema declared.

No examples provided.

get_audit ~211

Get one AI-visibility audit in detail by scanId (from list_audits): overall AI-citation score + SEO/GEO/authority scores, per-engine citation summary (ChatGPT/Perplexity/Gemini/Claude/Grok/Google AI Overviews), the query×engine citation matrix, competitors cited, the top prioritised gaps (title, category, impact, effort), and pass/warn/fail audit check counts. In the citation matrix every engine appears explicitly per query with one of three states: "cited" (the engine's answer cited the brand), "not_cited" (the engine answered but did not cite the brand), or "not_run" (the engine produced no measured answer for that query — it sat the query out or errored; NOT a miss). Bulky raw fields (page HTML, full engine answers) are omitted. Requires a signed-in account.

NameTypeReqDescription
scanIdstringyesThe audit/scan id from list_audits.

No output schema declared.

No examples provided.

get_engine_answers ~260

The RECEIPTS behind the tracking grid. For a brand (id or domain) and one tracked prompt — optionally a single engine — returns the actual stored answer text each engine gave on the most recent day, the brands it cited, the source URLs, and whether your brand was cited and at what position. Answer text is capped (~4000 chars per engine) with a `truncated` flag. Copy the exact prompt text from get_visibility's prompts[].prompt; a prompt that isn't found returns availablePrompts to pick from. Requires a signed-in account; works on Starter and up (the free trial has no MCP access).

NameTypeReqDescription
brandstringyesThe brand — a brand id (from list_brands) OR its bare domain, e.g. 'acme.com'.
enginestringOptional — limit to a single engine. One of: ChatGPT, Perplexity, Gemini, Claude, Grok, or Google AI Overviews (pass the key `aioverviews` for that last one; the others are their lowercase name, e.g.…
promptstringyesThe exact tracked prompt text to pull answers for — copy it from get_visibility (prompts[].prompt).

No output schema declared.

No examples provided.

get_visibility ~222

Your brand's LATEST DAILY TRACKING GRID — the core Cituna deliverable. For a brand (a brand id from list_brands, OR its bare domain), returns the most recent day's per-prompt × per-engine grid: for every tracked prompt and each of the six engines (ChatGPT/Perplexity/Gemini/Claude/Grok/Google AI Overviews) whether your brand was cited, its position when cited, the engine mode that ran (live/value/lite/off), plus per-cell status (cited / answered / empty / error / notrun). Also the brand's current visibility score, its label, and the UTC day it was measured. Compact JSON, designed to be read directly. Use get_engine_answers to see what an engine actually said for a prompt. Requires a signed-in account; works on Starter and up (the free trial has no MCP access).

NameTypeReqDescription
brandstringyesThe brand to report on — a brand id (from list_brands) OR its bare domain, e.g. 'acme.com'.

No output schema declared.

No examples provided.

gsc_cannibalisation ~234

Queries where two or more of your OWN pages compete for the same search. Google picks one URL per query, so when several of your pages qualify it splits the signal between them and often ranks the wrong one: two pages at position 60 instead of one at 30. Returns each affected query with every competing page, its position and impressions, which page Google favours, and the impression split. The usual fix is to pick the canonical target, make the others support it, and internally link accordingly. Cheap to run and one of the few SEO problems where the fix is free, because you already have the content. Requires a paid plan (Starter+).

NameTypeReqDescription
daysintegerTrailing window in days (1-480). Default 28.
domainstringBare domain, e.g. 'example.com'. Provide this OR siteUrl.
limitintegerMax queries returned. Default 50.
minImpressionsintegerIgnore queries below this many total impressions. Default 5.
siteUrlstringExact GSC property. Optional.

No output schema declared.

No examples provided.

gsc_coverage_gap ~222

Which published pages Google has never shown anyone. Reads the domain's sitemap, compares it against every page that earned at least one impression in the window, and returns the silent ones grouped by URL prefix so a whole dead section is obvious at a glance. This is usually the fastest 'here is what is wrong' a site can get: a library where half the URLs have never surfaced is not a ranking problem, it is pages published against demand that was never verified. Note the two causes it CANNOT separate — never indexed, versus indexed but never competitive. Confirm the difference with URL Inspection in Search Console before acting. Fetches the sitemap over HTTP from the domain itself. Requires a paid plan (Starter+).

NameTypeReqDescription
daysintegerWindow for 'earned an impression'. Default 90 — use the widest window the property has.
domainstringyesBare domain, e.g. 'example.com'. Its public sitemap is fetched over HTTP.
limitintegerMax silent URLs listed. Default 100 (counts are always complete).

No output schema declared.

No examples provided.

gsc_overview ~181

Live Google Search Console SUMMARY for a domain over the last N days: headline totals (clicks, impressions, CTR, average position) plus top queries, top pages, country and device splits, and a day-by-day time series. Windows are UTC and end ~2 days ago (GSC reporting lag). Best default for 'how is my search traffic doing?'. Requires a paid plan (Starter+). Returns {configured:false, message} if GSC isn't connected or no property matches the domain.

NameTypeReqDescription
daysintegerTrailing window in days (1–90). Default 28. Data lags ~2–3 days, so the window ends ~2 days ago.
domainstringyesBare domain to report on, e.g. 'example.com' (no scheme/path). Must match a connected GSC property.

No output schema declared.

No examples provided.

gsc_query ~464

Run an arbitrary Google Search Console Search Analytics query — the raw, flexible tool. Choose any dimensions (query, page, country, device, searchAppearance, date), an explicit date range OR a trailing `days` window, a row limit, and optional filters. Use dimensions:['date'] for day-by-day trends; ['country'] or ['device'] for splits; add filters to focus on a specific query or page. Windows are UTC and end ~2 days ago (GSC lag). Returns rows with keys[] plus clicks/impressions/ctr/position. Default rowLimit 100 — page with startRow when capped. Requires a paid plan (Starter+).

NameTypeReqDescription
dataStatestring'final' (default, stable) or 'all' (includes the freshest partial data for the last ~2 days).
daysintegerTrailing window in days (1–480) when startDate/endDate are omitted. Default 28. Window ends ~2 days ago (GSC lag).
dimensionsarrayDimensions to group by. Default ['query'].
domainstringBare domain, e.g. 'example.com'. Resolved to a connected GSC property. Provide this OR siteUrl.
endDatestringYYYY-MM-DD. Overrides `days`. Must be paired with startDate.
filtersarrayOptional filters, combined with AND. Each: {dimension, operator, expression}. e.g. {dimension:'query', operator:'contains', expression:'pricing'} or {dimension:'country', operator:'equals', expressio…
rowLimitintegerMax rows to return (1–25000). Default 100.
siteUrlstringExact GSC property instead of a domain, e.g. 'sc-domain:example.com' or 'https://example.com/'. Optional.
startDatestringYYYY-MM-DD. Overrides `days`. Must be paired with endDate.
startRowintegerZero-based offset for pagination. Default 0.
typestringSearch type. Default 'web'.

No output schema declared.

No examples provided.

gsc_query_mix ~305

What KIND of demand a domain actually earns, bucketed by intent: brand, competitor-alternative, persona-qualified, commercial, tool-intent, how-to, category. Per bucket: query count, impressions, share of total, clicks, and average position. Use it to answer 'what are we actually visible for, and is that the demand we want?' — a domain can look healthy on totals while every impression sits in one bucket at position 90. The persona-qualified bucket (role-prefixed conversational queries like "i'm a brand manager, X vs Y for a small team") is worth reading closely: these behave nothing like their head terms and usually rank far better, because the long tail is less contested. Also reports the anonymized-click reconciliation — GSC withholds low-volume queries, so named rows routinely account for well under the site's real click total. Requires a paid plan (Starter+).

NameTypeReqDescription
competitorsarrayCompetitor names to treat as competitor-intent even without an 'alternative/vs' word. Defaults to the brand's tracked competitors.
daysintegerTrailing window in days (1-480). Default 28.
domainstringBare domain, e.g. 'example.com'. Provide this OR siteUrl.
examplesPerBucketintegerSample queries to include per bucket. Default 5, 0 to omit.
siteUrlstringExact GSC property. Optional.

No output schema declared.

No examples provided.

gsc_status ~81

The authoritative Google Search Console connection check for this workspace: whether GSC OAuth is configured server-side, whether THIS workspace has connected (`connected`), the connected Google account email, and the list of verified GSC properties (site URLs / sc-domain: properties) available to query. whoami does not report GSC state — this tool is the truthful signal.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gsc_striking_distance ~300

The queries worth working on THIS week: everything ranking just off page one, ranked by how much traffic a realistic move would unlock. Returns each query with its position, impressions, the page that ranks for it, and a `priority` score (impressions weighted by how close to page one it already is — a ranking heuristic for ordering the list, NOT a traffic forecast). Position 11-60 by default: above 11 is already page one, below 60 is rarely reachable without new authority. This is the report to open before deciding what to write or rewrite — it is the difference between improving a page that can move and rewriting one that cannot. Requires a paid plan (Starter+).

NameTypeReqDescription
daysintegerTrailing window in days (1-480). Default 28.
domainstringBare domain, e.g. 'example.com'. Provide this OR siteUrl.
limitintegerMax rows returned. Default 50.
maxPositionnumberUpper bound. Default 60 — past this, position is an authority problem, not a content one.
minImpressionsintegerIgnore queries below this many impressions. Default 1.
minPositionnumberLower bound of the band. Default 11 (just off page one).
siteUrlstringExact GSC property, e.g. 'sc-domain:example.com'. Optional.

No output schema declared.

No examples provided.

gsc_zero_click_pages ~259

Pages Google shows and nobody clicks — impressions above a floor with zero (or near-zero) clicks, split by CAUSE, because the two causes need opposite fixes. `ranking` (average position beyond ~15) means the page is too far down to be clicked and needs authority or a rewrite. `snippet` (ranking well but not being clicked) means the page IS reachable and the title/meta description is losing the click — a much cheaper fix. Sorted by wasted impressions. This finds the single most common expensive miss in a content library: the page that earns the most impressions on the whole site and converts none of them. Requires a paid plan (Starter+).

NameTypeReqDescription
daysintegerTrailing window in days (1-480). Default 28.
domainstringBare domain, e.g. 'example.com'. Provide this OR siteUrl.
limitintegerMax rows returned. Default 50.
maxClicksintegerTreat a page as zero-click at or below this many clicks. Default 0.
minImpressionsintegerImpression floor for a page to count. Default 25.
siteUrlstringExact GSC property. Optional.

No output schema declared.

No examples provided.

list_audits ~139

List recent AI-visibility audits (scans) for your workspace, newest first: scanId, domain, date, AI-citation score, on-page SEO / GEO / authority scores, open-gap count, and each audit's scoring_epoch (the score-formula version that produced it). Only compare scores between audits with the SAME scoring_epoch — across epochs the scores are re-based, so compare citation counts instead. Pass a scanId to get_audit for the full breakdown. Requires a signed-in account.

NameTypeReqDescription
domainstringOptional client-side filter — only return audits for this bare domain, e.g. 'acme.com'.

No output schema declared.

No examples provided.

list_brands ~38

List the brands/domains tracked in this Cituna workspace. Handy for discovering which domains you can pass to the audit and gsc_* tools.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_citation_sources ~407

WHERE AI ANSWERS ABOUT YOUR CATEGORY ACTUALLY COME FROM, and whether you are really on those pages. Walks your recent scans and rolls up every third-party host the six engines cited when answering your tracked prompts: how often it was cited, which rival brands the engines associate with it, which of your prompts it answers, and sample URLs. Then — the field that matters most — `youOnThisSite`, which is not inferred from the answers but comes from OPENING those pages and reading them: 'absent' means we read the page in full and your brand is not on it (that is the citation gap, `isGap: true`), 'mentioned' means you are named with no link back, 'linked' means the page links to you, 'unreachable' means the site refused an automated read, and 'unknown' means it has not been read yet. The last two are NOT evidence of absence and must never be reported as gaps. Rival-owned and engine-owned domains are excluded, because a mention on a competitor's own blog or in a search vendor's docs is not an opportunity. Also returns the pages of yours engines DO cite, so you can see what is already working. This is usually the highest-leverage list in the product and the one that explains a citation score that will not move: improving your own page is a different job from being present in the pages engines already read. Free, reads stored scan and page-check data. Requires a signed-in account.

NameTypeReqDescription
domainstringyesBare domain, e.g. 'acme.com'.
gapsOnlybooleanOnly VERIFIED gaps — hosts whose cited pages we read in full and your brand was not on them (`youOnThisSite: 'absent'`). Excludes hosts not yet read, so this can under-report early on. Default false,…
limitintegerMax targets returned. Default 25.

No output schema declared.

No examples provided.

list_content_queue ~84

The AutoSEO content pipeline for a domain: topics waiting to be written, and the articles already generated or published, with the keyword or prompt that produced each one. Use it to see what is in flight before queueing more. Free, reads stored data. Requires a signed-in account.

NameTypeReqDescription
domainstringyesBare domain, e.g. 'acme.com'.

No output schema declared.

No examples provided.

list_gaps ~146

The fix/action queue for a domain: each AI-visibility gap with its stable gapKey, current status (todo / doing / done), title, category, impact, effort, and the concrete fix. Pass a scanId (exact audit) OR a domain (uses that domain's newest audit). Use set_gap_status to update a gap. Requires a signed-in account.

NameTypeReqDescription
domainstringBare domain, e.g. 'acme.com' — uses its most recent audit. Optional if `scanId` is given.
scanIdstringAudit id (from list_audits) to read gaps from. Optional if `domain` is given.

No output schema declared.

No examples provided.

list_keywords ~308

The keyword board for a domain: every tracked keyword with its Google position, monthly search volume, competition, and — the part that makes this actionable — whether an article for it is already queued, drafted or published. This is the join you want before writing anything: it tells you which keywords still have no page behind them. Positions come from two sources and each row says which: the rank checker (a live SERP read, but it only sees the top 20) and Search Console (a 28-day average, no top-20 cliff, ground truth for your own pages). That second source is what stops every keyword past #20 collapsing into one indistinguishable 'not in top 20' — with it, #75 and #95 are told apart, and moving #75 to #40 is visible progress instead of no change at all. The Search Console join costs one metered read; pass includeSearchConsole:false to skip it and keep the call free. Requires a signed-in account.

NameTypeReqDescription
domainstringyesBare domain, e.g. 'acme.com'.
includeSearchConsolebooleanAttach the 28-day Search Console position/impressions/clicks per keyword. Default true. Costs one metered GSC read; set false to keep this call free. Degrades silently when Search Console is not conn…
stagestringOptional filter on content state. 'none' is the useful one: keywords with nothing written for them yet.

No output schema declared.

No examples provided.

mark_article_published ~173

Tell Cituna a page for this keyword is LIVE on the site — one you wrote yourself, published from your own CMS, or produced by driving this MCP. Cituna then stops suggesting the topic, shows the keyword as published on the Keywords board, and stops offering to write a competing page for it. Use it right after you publish; pass the keyword exactly as list_keywords shows it and the page's full https URL. WRITE ACTION — requires a Pro plan or higher.

NameTypeReqDescription
domainstringyesBare domain the page belongs to, e.g. 'acme.com'.
keywordstringyesThe keyword this page targets, as listed by list_keywords.
titlestringOptional page title. Defaults to the keyword.
urlstringyesFull https URL of the published page.

No output schema declared.

No examples provided.

queue_article ~258

Queue an article for a keyword so AutoSEO drafts it on the next run. Pass the keyword exactly as it appears in list_keywords, plus its evidence when you have it — `impressions` (from Search Console, as list_keywords reports) and `position` are what actually rank the queue now; volume/competition are legacy provenance from bought metrics and are usually absent. Queueing a keyword that already has a topic or article returns a duplicate notice rather than a second copy. WRITE ACTION — requires a Pro plan or higher; on Starter/trial the MCP is read-only.

NameTypeReqDescription
competitionnumberLegacy: competition 0-1, paired with volume.
domainstringyesBare domain the keyword belongs to, e.g. 'acme.com'.
impressionsnumberSearch Console impressions for this query (list_keywords reports them). The primary queue-priority signal.
keywordstringyesThe keyword to write about, exactly as listed by list_keywords.
positionnumberCurrent Google position, if the site ranks at all. Deep positions with real impressions rank the queue highest.
volumenumberLegacy: monthly search volume, if you have a bought figure. Impressions are preferred.

No output schema declared.

No examples provided.

run_scan ~260

Run an AI-visibility audit for a website and return the completed result (scores, citation matrix, competitors, top gaps). A fresh scan takes about a minute and CONSUMES ONE SCAN from your monthly quota. Two honest caveats: (1) for a domain the workspace does not already track (and with no competitors passed), the backend may answer from a recent shared measurement up to 7 days old — that replay consumes no quota and adds NO entry to list_audits; (2) a successful scan of a new domain also adds it as a tracked brand, which counts against the plan's brand cap. Optionally pass competitors to steer the comparison (this forces a fresh run). Prefer list_audits/get_audit to read an existing audit for free; use run_scan only when fresh data is needed. WRITE ACTION — requires a Pro plan or higher; on Starter/trial the MCP is read-only (run scans in the app instead).

NameTypeReqDescription
competitorsarrayOptional competitor domains to compare against (up to 8). Steers the comparison instead of relying only on auto-detection.
urlstringyesSite to scan — bare domain 'acme.com' or full URL 'https://acme.com'.

No output schema declared.

No examples provided.

set_gap_status ~115

Update one gap's status in the action queue (todo / doing / done). Use the gapKey and domain from list_gaps. e.g. mark the schema gap for acme.com done. WRITE ACTION — requires a Pro plan or higher; on Starter/trial the MCP is read-only.

NameTypeReqDescription
domainstringyesBare domain the gap belongs to, e.g. 'acme.com'.
gapKeystringyesThe stable gapKey from list_gaps.
statusstringyesNew status.

No output schema declared.

No examples provided.

set_outreach_status ~158

Record where you have got to with one citation-source host: mark it todo, doing or done as you pitch, get listed, or rule it out. Statuses are stored per workspace per domain and come back on every list_citation_sources call, so the outreach list survives across sessions instead of living in someone's head. Use the exact `host` string from list_citation_sources. Needs Pro or higher: on Starter the MCP is read-only.

NameTypeReqDescription
domainstringyesBare domain the target belongs to, e.g. 'acme.com'.
hoststringyesThe target host exactly as list_citation_sources returned it, e.g. 'frase.io'.
statusstringyesWhere this target stands.

No output schema declared.

No examples provided.

whoami ~112

Return the authenticated Cituna account (email, workspaceId, role), the backend URL, your plan (Starter/Pro/Max), and — when available — the full usage meters: per-tool used/limit (scans, MCP calls, GSC reads, …) plus brand and prompt-pool counts. Use this first to confirm the connection works. Does NOT report Search Console state — call gsc_status for that. Fails with an actionable message if the API key is missing, invalid, or revoked.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the com.cituna/cituna-mcp server?

com.cituna/cituna-mcp is listed in the public MCP registry as com.cituna/cituna-mcp. Track how 6 AI engines cite your brand, daily, with live Google Search Console. This page covers its npm package (cituna-mcp).

Is the com.cituna/cituna-mcp server safe to use?

com.cituna/cituna-mcp scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. 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 com.cituna/cituna-mcp server expose?

com.cituna/cituna-mcp exposes 24 tools: whoami, list_audits, get_audit, get_visibility, get_engine_answers, and 19 more. Their descriptions and schemas cost roughly 5,135 tokens of context every time the server is loaded.

Is the com.cituna/cituna-mcp server still maintained?

com.cituna/cituna-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 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 com.cituna/cituna-mcp server under?

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