GetCited
by app.getcited.dev in Other
SEO and AI-visibility operator tools: site health, ranked actions, ranks, visitor behavior.
https://app.getcited.dev/api/mcp
Last 30 days
- Uptime
- 100%
- Response time
- 283 ms typical, 322 ms slowest 5%
- Last check
- 2 h ago
- Next check
- in 5 h
How to call it
Add it to any MCP client that supports remote servers.
{
"mcpServers": {
"getcited": {
"type": "http",
"url": "https://app.getcited.dev/api/mcp"
}
}
}29 tools
- 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.
- 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, plus `next`, the first step still open. C
- 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 means nothing is tracked yet. To find the s
- 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 with created=false, so call this before
- 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 with its history intact. Use it for a si
- 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 after run_audit to see whether the crawl f
- 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 never returned, and a page fixed recent
- 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 rationale once and up to five example actio
- 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 current title and its length; the shape varies
- 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 answers not_found, so a repeat call change
- 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 move in rank or citations be traced to thi
- 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 real reason is worse than leaving the pro
- 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 this call (it holds for at most 60 seconds,
- 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 are lowercased, and one already tracked i
- 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, null when the site is not in it, foundUrl,
- 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 saying whether it has ever been checked:
- 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 land about ten minutes later, sometimes lo
- 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. These are the questions the brand should be
- 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 `days`. Read-only. Frequency over the window
- 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_summary for the result, and remember a si
- 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 check_rankings or check_geo results have
- 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 (rage and dead clicks). Read-only. Needs t
- 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 marketCountry and marketLanguage as two low
- 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 complete, and `missing`, which names the
- 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 engines issued while answering them; `kind
- 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); anything else answers not_found. You get back:
- 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: `crawl` carries the status, word count, JSO
- 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 does; `citation`, a prompt and engine who
- 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 rest of the site (only meaningful with
Security scan
- No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time |
|---|---|---|---|
| 2 h ago | Passed | 200 | 252 ms |
| 11 h ago | Passed | 200 | 283 ms |
| 20 h ago | Passed | 200 | 339 ms |
| 29 h ago | Passed | 200 | 322 ms |