GetCited is an MCP server with 29 tools an agent can call, among them add_geo_prompts, add_keywords, add_project. It answers at https://app.getcited.dev/api/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 4 of 4 times since 23 September 2026; the last check, on 6 November 2026, succeeded.
SEO and AI-visibility operator tools: site health, ranked actions, ranks, visitor behavior.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
add_geo_prompts | Pass `prompts` as an array of objects, not strings: each is { prompt: "best seo tool for agents", stage?: "tofu" | "mofu" | "bofu", format?: "keyword" | "conversational" | "list" }, with the projectId from add_project or list_projects. Thes Inputs: projectId, prompts |
add_keywords | Starts tracking search `terms` for a project and returns `added`, the number of new keywords. Pass terms as an array of plain search phrases (terms: ["seo tool", "rank tracker"]) with the projectId from add_project or list_projects. Terms a Inputs: projectId, terms |
add_project | Register the site you are working in, and get its project id back. Pass the domain you derived from this codebase (git remote, deployed URL, site config). Safe to call every run: if the site is already tracked you get the same project back Inputs: domain, brandName |
check_geo | Queues a run of every tracked GEO prompt against each configured AI answer engine and returns status, jobId and the prompt count. The work runs asynchronously in the worker and takes minutes; this returns as soon as it is queued. Poll geo_s Inputs: projectId, force |
check_rankings | Queues a search-position check (top 30 results) for every keyword tracked on this project and returns status, jobId and the keyword count. The work runs asynchronously in the worker: the searches are submitted immediately and the results la Inputs: projectId, force |
claim_action | Marks an open action as claimed by this API key, so other agents working the same queue skip it, and returns the updated action. Only an open action can be claimed: one already claimed (by any agent, this one included), done or dismissed an Inputs: projectId, actionId |
complete_action | Mark a problem done after you have addressed it in the codebase. Pass `note` to record what you changed; the owner reads it to tell a real fix from a box ticked. Pass `commit` with the sha that carries the change: it is what lets a later mo Inputs: projectId, actionId, actionIds, note, commit |
dismiss_action | Drop a problem you are deliberately not acting on, and say why. `reason` is required and is shown to the site owner: explain what makes this finding wrong or inapplicable here, in a sentence they could disagree with. A dismissal without a r Inputs: projectId, actionId, reason |
geo_summary | Returns how often the site appears in AI answers: one row per tracked prompt, and within it one entry per engine with runs, citedRuns, mentionedRuns, citedRate and mentionedRate, plus the competitor domains cited instead, over the last `day Inputs: projectId, days, view |
get_action | Returns one action in full: type, priority, title, rationale (what was measured and why it matters), targetUrl, status, the claim and closing fields, and `payload`, the evidence (the audit rule id and its measured values, such as the curren Inputs: projectId, actionId |
get_behavior_digest | Returns visitor analytics from the site's own traffic over the last `days`: sessions, engaged and bounce rates, channels including AI assistants, top pages, exit pages, statistically flagged high-bounce pages (z-test, n>=30) and friction (r Inputs: projectId, days |
get_content_brief | Evidence for building a page for one query. Contains no wording; what to write is yours. `query` is one row's `query` from list_opportunities, exactly as it came back (a tracked keyword, a tracked prompt, or a fan-out sub-question); anythin Inputs: projectId, query |
get_next_work | The one call an unattended agent needs: the findings worth acting on now, most important first, or an instruction to stand by until a given time. Ordering is severity weighted by the page's own measured traffic. Pages the owner excluded are Inputs: projectId, limit |
get_page_history | Every measurement that touched one page, newest first, so a change can be matched to its effect. `url` is the full url of a page on the tracked site (https://example.com/guide); `days` defaults to 90. Three kinds of row on one timeline: `cr Inputs: projectId, url, days |
get_page_profile | Returns the visitor behaviour of one page over the last `days`: pageviews, entries, bounce rate, exits, 50% and 100% scroll rates, average active time, rage and dead clicks, and vsSite, a two-proportion z-test of its bounce rate against the Inputs: projectId, path, days |
get_project_profile | The stored profile for a project: the three texts as they were written and where they came from, the market country and language, the tracked competitors, the declared techStack next to the detectedStack the latest crawl saw, whether it is Inputs: projectId |
get_setup_status | The onboarding as a checklist for one project: each step (profile, tech stack, competitors, first audit, keywords, rank check, GEO prompts, GEO check, visitor snippet) with whether it is done, what it needs and the tool that completes it, p Inputs: projectId |
get_site_health | Returns the project's current state: the latest crawl (status, pages crawled, when), issue counts by severity and by rule, the open action count and the scores, where a dimension with no data yet is null rather than 0. Read-only. Call it af Inputs: projectId |
how_to_authenticate | This server is not authenticated, so none of its SEO tools will answer. Call this for the exact steps to fix it. Retrying other tools will not help. |
list_actions | Returns the prioritized problems filed for a project, most urgent first; priority 1 is most urgent, 5 least. Read-only. Defaults to open ones. By default it answers grouped: one entry per rule (or type) with the count, the priority, the rat Inputs: projectId, status, view, ruleId, type, limit |
list_keywords | Returns `keywords`, one row per tracked keyword, newest first: id (the keywordId rank_history takes), term, country, language, createdAt, `metric` (search volume, cpc, difficulty, fetchedAt) and `rank` (latest position within the top 30, nu Inputs: projectId |
list_opportunities | The opportunity queue: one row per query the site should hold and does not, or holds badly, built only from rows already measured. Keywords come from rank checks, prompts from AI answer-engine runs, and fanout rows from the sub-questions en Inputs: projectId, kind, limit |
list_projects | Lists the sites this API key can operate on and returns `projects`, newest first, each with id (the projectId every other tool takes), domain and createdAt. Read-only. Sites removed with remove_project are not listed, and an empty array mea |
list_regressions | What is measurably worse than it was, over the last `days` (default 30). Three kinds: `rank`, a keyword whose best position over the last three checks is at least three places worse than over the three before, or that ranked and no longer d Inputs: projectId, days |
rank_history | Pass `keywordId`, which is the id field of an entry from list_keywords, together with the projectId that keyword belongs to. Returns the position samples for that keyword over the last N days (default 30), one per rank check, and a status s Inputs: projectId, keywordId, days |
refresh_actions | Rebuilds this project's action list from what is already measured (crawl findings, ranks, AI-engine citations, visitor behavior) by fixed rules: no model, no provider call, no quota. Every crawl already triggers one, so call it only after c Inputs: projectId |
remove_project | Stop tracking a site: it leaves list_projects, stops being crawled or checked, and frees a site slot on the plan. Nothing is erased. Its crawls, findings and history are kept, and add_project on the same domain brings the same project back Inputs: projectId |
run_audit | Queues a fresh crawl and audit of the site and returns the crawl id and status, up to maxPages pages (default 100; the response says how many it used). Most crawls finish in under 30 seconds: pass wait: true to get the finished crawl in thi Inputs: projectId, maxPages, wait |
set_project_profile | Step one of the growth recipe, and the gate on the rest of it. Record what this site sells in the owner's words: productSummary (a paragraph, at most 600 characters), valueProposition (at most 300), audience (at most 300), plus optional mar Inputs: projectId, productSummary, valueProposition, audience, marketCountry, marketLanguage |
Every block below points at https://app.getcited.dev/api/mcp. Pick your client and copy.
claude mcp add --transport http getcited https://app.getcited.dev/api/mcp
{
"mcpServers": {
"getcited": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.getcited.dev/api/mcp"]
}
}
}{
"mcpServers": {
"getcited": {
"url": "https://app.getcited.dev/api/mcp"
}
}
}{
"servers": {
"getcited": {
"type": "http",
"url": "https://app.getcited.dev/api/mcp"
}
}
}{
"context_servers": {
"getcited": {
"url": "https://app.getcited.dev/api/mcp"
}
}
}{
"mcpServers": {
"getcited": {
"serverUrl": "https://app.getcited.dev/api/mcp"
}
}
}{
"mcpServers": {
"getcited": {
"url": "https://app.getcited.dev/api/mcp"
}
}
}name: GetCited
version: 0.0.1
schema: v1
mcpServers:
- name: GetCited
type: streamable-http
url: https://app.getcited.dev/api/mcp{
"mcpServers": {
"getcited": {
"httpUrl": "https://app.getcited.dev/api/mcp"
}
}
}{
"mcpServers": {
"getcited": {
"type": "http",
"url": "https://app.getcited.dev/api/mcp"
}
}
}{
"mcpServers": {
"getcited": {
"url": "https://app.getcited.dev/api/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapp.getcited.dev%2Fapi%2Fmcp&type=streamable_http&id=getcited&name=GetCited
It answered our last check on 6 November 2026 in 344 ms. Over 4 checks since 23 September 2026 it answered 4. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by getcited.dev and served from app.getcited.dev, the vendor's own domain: https://app.getcited.dev/api/mcp.
29, as returned by the server's own tools/list on 11 November 2026: add_geo_prompts, add_keywords, add_project, check_geo, check_rankings, claim_action, complete_action, dismiss_action, and 21 more.
It answered our last check on 6 November 2026 in 344 ms. Over 4 checks since 23 September 2026 it answered 4.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://app.getcited.dev/api/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: dev.getcited. Endpoint host: app.getcited.dev. ARD identifier: urn:air:dev.getcited:mcp:mcp.
First indexed 20 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.