mcpbeat Sign in

Sightkick MCP Server

by sightkick Your server? Claim it
not responding

Sightkick is listed as active in the registry but did not answer our last check. It exposes 37 tools. Last commit 4 Nov 2026.

The agentic SEO and GEO platform your AI agent uses to rank on Google and in AI search.

Uptime history 74 days of history · worst day 0%
74 days agonow
0.0%
Uptime 24h
0 of 91 checks
37
Tools
read from the server
49 ms
Response time
average over 24h
0
Stars
last commit 4 Nov 2026

What changed 33

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 4 November 2026. No other catalogue keeps this.

8 Nov 5 tool descriptions were rewritten generate_page, get_settings, update_page and 2 more
8 Nov 3 tools changed the parameters they ask for update_improvements, update_page_images, update_writing
6 Nov 11 tool descriptions were rewritten check_web, get_guidance, get_settings and 8 more
6 Nov 8 tools changed the parameters they ask for get_settings, publish_page, schedule_page and 5 more
4 Nov 4 tool descriptions were rewritten get_outreach, update_jobs, update_outreach and 1 more
4 Nov 2 tools changed the parameters they ask for update_jobs, update_outreach

Sightkick does not always answer

Over the last week it answered 4.1% of our checks. We check every 15 minutes, so you hear about the next outage within the hour — not from your users.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 3 min ago.

run in your terminal
claude mcp add mcp --transport http https://app.sightkick.so/mcp
Settings → Connectors → Add custom connector, then paste this address
https://app.sightkick.so/mcp
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://app.sightkick.so/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://app.sightkick.so/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp": {
      "type": "http",
      "url": "https://app.sightkick.so/mcp"
    }
  }
}

Available tools 37

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

outreach
get_outreach
The pages worth a link and the conversations with them, sent from the workspace's one sending inbox. view: - prospects(limit?): Pages AI answers cite where rivals are named and the brand isn't, by Opportunity, with the evidence, the threads in flight and won and lost. - prospect(id): One prospect as a pitch sees it: the page, the contact, the drafted email. - threads(lane?, yourTurn?, limit?): Conversations, newest first (queued, sent, replied, or one lane), yourTurn for replies waiting on an answer (a won thread they wrote on again included), each with the last reply's intent and offer: their ask for money, a link swap or a guest post. Answer one with send_outreach reply (or draft_reply for the owner's OK) inside Google's link rules: a paid link carries rel="sponsored", a swap is two links marked nofollow, a guest post keeps a branded anchor. - thread(id): One conversation in full, every mail oldest first, and the waiting reply draft. - follow_up(id): The next follow-up owed: step, due date, the body, paused. - sequences: The pitch sequences with their numbers, their follow-ups' timing and the split test. - sequence(sequenceId): One sequence: name, pitch and follow-ups. - blocklist(kind?, limit?): The do-not-contact list, newest first. - unmatched: Emails no thread matched (update_outreach link_mail files one).
update_outreach
Find, prepare and follow up the pages worth a link. Nothing here sends an email: send_outreach does. action: - add(url, contactEmail?, contactName?): Put a page on the list by its address: read and scored within a minute, never pitched by Sightkick on its own. - discover: Run the prospect discovery now (a minute or two, then get_outreach prospects). - find_contact(url): Find the editorial contact for any page: one of the month's contacts found when one is found. Saved on its prospect. suppressed: never write to it. - set_contact(id, email, name?): Set a prospect's contact by hand. - lead_with(id, url): Pitch another of the site's pages instead (the pitch is redrafted). - prepare(id): Find the contact (one contact found) and draft the pitch. Works on the trial. - write_pitch(id, subject, body): Your own pitch in place of the draft: subject and plain-text body, no signature (added when it sends). - draft_reply(id, body): Draft the next reply on a thread, plain text, for the owner's OK: it waits in the thread's composer under your name until they send, change or discard it, or send_outreach reply sends it. Sightkick drafts no replies itself. - handled(id): Handled, no reply: their mail was answered some other way or needs none, so the thread stops waiting on an answer. Nothing is sent. When they write again it waits again. - discard_reply(messageId): Delete a waiting reply draft. - edit_message(messageId, subject?, body): Rewrite a booked send (a pitch needs its subject). - edit_follow_up(id, body): Rewrite the next follow-up before it's queued. - pause_follow_ups(id): Pause a thread's follow-ups. - resume_follow_ups(id): Let a thread's follow-ups send again. - won(id, linkUrl?, anchorText?): The link is placed: sends stop, the ledger gets the link and checks it. - lost(id): Mark a prospect lost. - dismiss(id, reason?): Decline a prospect: its site goes on the blocklist (unblock brings it back). - unblock(blockId): Take a domain or address off the blocklist (get_outreach blocklist). An address that asked not to be emailed, or complained, stays for everyone. - link_mail(mailId, prospectId): File an unmatched email on a prospect's thread. - ignore_mail(mailId): Forget an unmatched email.
update_outreach_setup
The sending inbox's settings and the pitch sequences (Settings → Sending inbox, Sequences). action: - signature(inboxId, signature): An inbox's signature (empty clears it). - daily_limit(inboxId, dailyLimit): An inbox's sends per day, 1 to 30. A raise restarts the warm-up climb. - warm_up(inboxId, on): An inbox's warm-up on or off. Off sends the whole daily limit from today, which hurts a new inbox's deliverability. - send_window(startHour?, endHour?, timezone?, weekdaysOnly?, dailyLimit?): When mail goes out: hours, timezone, weekdays only, the default daily limit. - opt_out(on?, lines?): The opt-out line under every email: on, and its lines (null puts Sightkick's back). - postal_address(address): The postal address under every email (empty clears it). - disconnect_inbox(inboxId): Take an inbox off (get_settings inbox): it stops sending and hearing replies, its queued sends are cancelled, its threads keep their history. A managed inbox taken off is cancelled with its domain. Connecting one again is the owner's sign-in. - create_managed_inbox(domain, firstName, lastName, username?, platform?, redirectUrl?): Order the managed inbox: the domain and one mailbox in the sender's name (username before the @, the first name when left out; GOOGLE or MICROSOFT; redirectUrl where the domain forwards, the site when left out). It connects itself in minutes, warm-up on. One inbox per brand: refused while another is being set up or an earlier one still listens. A new managed inbox needs the old one disconnected first, and charges the domain fee again to the plan's card. The same order asked again returns it, nothing charged. - save_sequence(sequenceId?, name?, pitch?, followUps?): Create a sequence (no sequenceId: inactive) or edit one: name, pitch (subject, body), followUps (enabled, days, body). What's left out stays. - duplicate_sequence(sequenceId): An inactive copy. - activate_sequence(sequenceId): Make it the one active sequence (ends a split test in its favour). - split_test(sequenceId): Run it beside the active one: new pitches alternate. - end_split_test(sequenceId): Take it out of the split test. - archive_sequence(sequenceId): Archive an inactive sequence with its numbers. - unarchive_sequence(sequenceId): Bring an archived sequence back, inactive. - remove_sequence(sequenceId): Delete a sequence never used (a used one is archived instead). Can't be undone.
backlinks
get_backlinks
Links to the site and the places it should be listed. Free: another site's links are research_backlinks. view: - ledger(limit?): Every backlink Sightkick watches: source (outreach, directory, found, manual), type (dofollow, nofollow, ugc, sponsored, mention) and verdict (live, dropped, checking, not_found). - profile: The site's own link profile from its weekly check: domain rating, links, referring sites and what the last check found (the linking pages are the ledger). - mentions: Pages naming the brand without a link: easy links to ask for. - directories(status?): The directories this business belongs on, ranked by how often AI answers cite them: status, where to list, cost, the submit page, the fields pre-written. Submit a listing yourself with the kit, as each directory's own rules allow, then mark it with update_backlinks directory. - kit: The listing kit the directories' fields come from.
update_backlinks
The backlink ledger, a directory listing's status and the listing kit. action: - add(url): Add a page that links to the site to the ledger, by its public address. - remove(id): Take a row out of the ledger. - directory(key, status, url?): Where a directory's listing stands (its key): submitted, live (with the listing's url, it joins the ledger), skipped, or todo. - prepare_directory(key): Write one directory's own fields from the kit. - save_kit(segment?, fields?, logo?, images?): Save the kit: segment, fields by key, logo null clears it, images the kit's own files in order. - kit_image(as, url?, data?): Add the kit's logo or an image, by public url (5 MB) or base64 data (700 KB). - start_directories: Start what opening Directories in the app starts, once per workspace: the kit's first words from the business profile and the search for listings the site already has (found ones turn live). Each part says started, or done if it ran before. - rebuild_kit: Write the kit again from the business profile and offerings, after the profile changed: every field the profile gives is redone (a minute or so). Phone, address, hours, shipping, affiliate program, logo, images and segment stay.
improvements
get_improvements
What to change on the site, and what changes did. view: - suggested(includeSkipped?): This week's changes to published pages (title, a section answering a search, links, facts, an AI citation to win back): why, what it could win, status, date, and prompt, the change as a brief to follow. - other_pages: SEO title and description changes for pages Sightkick didn't write (Shopify, WordPress), before and after. - issues: What's wrong with the site, worst first: why it matters, how to fix it, the pages, who does it, a prompt to follow, and what was fixed lately. - health: The site scan: AI crawlers turned away, sitemaps, Google's verdict on every listed page, 404s, redirects and dead links. - todos: The site's to-dos Sightkick can't do by itself (robots.txt, a dead link while Auto improvements is manual, a profile to claim): yours where you can reach it, else the owner's. complete_todo once done. - results: Every change made and its reading against the page's own 28 days before, net of the site's trend, undone ones included. - candidates(limit?): Every change this week's data supports on each live page (the weekly review picks from these), blocked when it can't go now.
update_improvements
Act on any improvement at any time: Auto improvements only says whether Sightkick makes them by itself. An id is a suggested change's or another page's. action: - approve(id): Queue a change on the next free day. The old version is kept. - skip(id): Not this one: off the list, the page rests (60 days, 90 for another page). - unqueue(id): Back into the list, off its day. - restore(id): A skipped change back into the list. - undo(id): Take a live change out and send the page out again. - redo(id): Put an undone change back, with a new 28-day reading. - decline_issue(check): Decline a site finding for 60 days. - restore_issue(check): Bring a declined finding back. - complete_todo(actionId, result?): Mark a to-do done, with what was done. - skip_todo(actionId): Skip a to-do: not raised again for 60 days. - scan: Check the site now (at most every ten minutes). - indexnow(urls, key?): Tell IndexNow (Bing, Copilot) pages of the site are new or changed: up to 100 per call and per day. A site you ship yourself passes the key it serves at /<key>.txt.
keywords
get_keywords
The saved keywords and their topics, best Opportunity first. Free. view: - keywords(limit?, noTopic?, topic?, page?): Each saved keyword with its numbers, Search Console position, topic and page (none, planned, writing, ready, failed, published). Filter by topic id, page or noTopic. - topics(limit?, page?): Topics: the saved keywords Google answers with the same pages, one page each. page none = a page to make.
update_keywords
Change the saved keywords. Free, up to 100 per call. action: - save(keywords): Save keywords as the owner's own: Sightkick checks each on Google within a minute and puts it on its topic. A removed one comes back. - move(keywords, to): Put keywords on a topic (its id, or "new" for one of their own). They stay where you put them. - set_main(keyword): Make a keyword its topic's main keyword, while the page isn't written. - remove(keywords): Take keywords off for good: Sightkick never adds them back. - link(keywords, url?, articleId?, title?, clear?): Say which page targets these keywords: a URL of the site or a page's articleId. clear unlinks.
page
update_page
Write pages and change them. A body is clean semantic HTML (h2 and h3 sections, paragraphs, links), no styles or scripts. Every page gets a title card as its featured image. A picture in the body is a screenshot of a real page (update_page_images screenshot: a product you name, its pricing) or your own upload, then its returned URL goes in an <img>. action: - create(title, primaryKeyword, contentHtml?, metaTitle?, metaDescription?, excerpt?, slug?, question?, articleType?, pageType?, subject?, destination?, schedule?): A new page, with your body or empty. The duplicate check runs first and duplicateCheck names a page this one may repeat (improve that one instead), but never stops it. pageType makes a comparison, alternatives, integration or use_case page about subject, in its type's destination (refused while that destination is switched off). destination puts a blog-style page in one of the owner's own folders. It is yours to write (sightkickWrites off; update_page edit sightkickWrites: true hands it to Sightkick). Without schedule it waits in Unscheduled: ready with a body, planned without. schedule: next (the next open slot) or a day puts it on the schedule, where it goes live that day exactly as written. publish_page publish sends it now. next says how it goes out. - edit(articleId, contentHtml?, title?, metaTitle?, metaDescription?, excerpt?, slug?, articleType?, question?, questions?, notes?, baseHash?, reason?, sightkickWrites?, destination?): Change a page: contentHtml replaces the whole body. A live page, at any age, needs baseHash (get_pages page) and goes to the site with publish_page republish. Say why in reason: it stays on the page's record, where the change is measured from the day it goes out. The slug and destination only before it's live, the type and brief only before it's written. - delete(articleId): Delete a page that never went live. Can't be undone. - register(url, query, prompt?, title?, articleType?, liveSince?): Record a page you shipped yourself (a repo, the CMS), so it's tracked like Sightkick's: index, Search Console, AI citations. query is its main search, prompt the buyer's question it answers. Again on the same URL updates it. - unregister(pageId): Stop tracking a registered page (get_pages shipped). The site doesn't change. - log_change(url, what, commit?): Record a change you made to a live page yourself, so its result is read over the next weeks (get_activity receipt with the changeId). An update_page edit needs none: it is measured once it goes out.
update_page_images
A page's pictures. Every page has a title card as its featured image, drawn by Sightkick in the brand's colour and font. Add a screenshot of a real web page or upload your own picture; neither edits the body: put its url in an <img> with update_page edit. A featured image needs no tag. action: - screenshot(articleId, url, alt?, featured?, position?): Screenshot a public web page (a product's homepage, a pricing page) at 1280×800 with cookie banners hidden, and add it. Counts against the plan's monthly screenshots; a failed capture costs nothing. Returns mediaId, url and a dated caption to put under it. - upload(articleId, url?, data?, alt, featured?, position?): Your own picture, by public url (up to 8 MB) or base64 data (up to 700 KB): PNG, JPEG, GIF, WebP or AVIF. Returns mediaId and url. featured: true puts it in place of the title card. - alt(mediaId, alt): Set an image's alt text. - featured(mediaId): Make an image the featured one. - position(mediaId, position): Its place in what the site receives. - remove(mediaId): Delete an image the body no longer shows (not the title card: feature another picture instead). Can't be undone.
prompts
get_prompts
The buyer prompts Sightkick tracks in AI answers, and their answers. view: - list: Every tracked prompt with its visibility, sentiment, position, brands named and gap verdict. - prompt(promptId): One prompt in depth: its sources and its runs per AI model (each runId opens an answer). - answer(runId): One stored answer in full: its text, cited sources, brands found. - suggestions(keyword?, limit?): Questions buyers ask that nobody tracks yet, from People Also Ask and the site's own searches. A keyword opens its Google results page for more, free (as check_web serp). - rechecks: Questions booked to be asked again (ask_ai recheck): the answer then and, once asked again, now. - models: Every AI model, which are tracked, and the plan's count.
update_prompts
Choose what is tracked in AI answers. action: - track(prompts): Track up to 25 prompts at once: each comes back added or skipped with why (the plan's limit, a repeat). intent: informational, commercial or transactional. One naming the brand stays out of the headline rate. - retire(promptId): Stop tracking one. Its history stays. - restore(promptId): Track a retired prompt again, with its history, while there's room. - models(models): The tracked AI models: exactly the plan's count.
reports
get_reports
The shareable reports, each with its link and sections.
update_reports
Shareable reports at /r/<token>: anyone with the link reads them. action: - create(name?, sections?): A new report (sections left out take the app's defaults). Returns its link. - edit(id, name?, sections?): Change its name or sections. The link stays. - rotate_link(id): A new link: the old one stops working at once. - remove(id): Delete a report and its link. Can't be undone.
research
research_backlinks
Other sites' links, from the backlink index: one of the month's backlink lookups per call (an answer from the last 7 days is free unless refresh, and usage says what's left). The site's own profile is get_backlinks profile, free. lookup: - profile(domain, refresh?): Who links to a site: domain rating, links, referring sites, spam score, the 25 strongest. - gap(rivals, refresh?): Pages linking to every rival named (one to three) and not to the site, strongest first: pitch them with update_outreach add. - metrics(targets): Link metrics for up to 50 domains or pages.
research_keywords
Keyword research, each with volume, difficulty, CPC, intent, Opportunity (0 to 100), fit (0 to 3), onTopic and saved. One keyword search per call (the same within 30 days is free). Save the good ones with update_keywords. from: - seed(query, limit?, months?): Ideas around a seed search. - competitor(domain, limit?, months?): The searches a site ranks for (any domain, the top 200), with its position. - gap(domain, limit?, months?): Searches a rival ranks for and the site doesn't.
account
update_account
The account as Settings → Plan and → Notifications, and the brand switcher, keep it (read them with get_settings plan and notifications). A plan change charges or credits the card on file, for an admin's agent. Starting the plan is the person's own click: the first card in Stripe's Checkout, and ending a free trial early with Start my plan now (get_settings plan gives the link), as are signing in and who gets access. What a trial holds back (sending email, the mailbox, the whole allowances) opens when the plan starts. The plan is amounts: articles (Sightkick's a month), prompts, aiModels, keywordSearches, contactsFound, managedInbox, interval (month or year), each on its steps (get_settings plan); what's left out stays. action: - change_plan(articles?, prompts?, aiModels?, keywordSearches?, contactsFound?, managedInbox?, interval?): Change the amounts or the cycle. A bill that rises or holds changes today, the difference charged; one that falls is booked for the renewal, nothing charged. On a trial it applies at once, nothing charged before the trial ends. payLink: the card wants the person to confirm. - undo_downgrade: Take back a downgrade booked for the renewal: the plan stays as paid for, nothing charged. - pause_plan(months): Pause a monthly plan for 1 to 3 months from its renewal: nothing billed and Sightkick's work stops meanwhile, everything set up stays. - resume_plan: Keep the plan: take back a cancel, or end a pause today. - cancel_plan(reason, comment?): Cancel at the renewal, with why (reason: price, results, technical, priority, switching or other, and a comment): everything runs until then, nothing more charged, resume_plan takes it back. A plan in its pause ends at once. - notifications(email?, positiveReplies?, weeklyBrief?, nudges?): When Sightkick emails the owner: email (empty clears it, and every notification goes quiet), positiveReplies, weeklyBrief, nudges. What's left out stays. - create_brand(websiteUrl, name?): A new brand for the person you act for, on its website (name: the site's when left out). They finish its setup in the app (the analysis, the review, the trial with their card); connect to it to work there. - delete_brand: Delete this workspace's brand, for an admin's agent: its plan ends at once with nothing refunded, Google and the mailboxes are disconnected, and every page, prompt, thread and number Sightkick holds for it is deleted. The site keeps what was published to it. This connection stops with it. Can't be undone.
activity
get_activity
What happened in the workspace, and what came of it. view: - log(limit?): What Sightkick, the owner and agents did, newest first. - events(after?, types?, limit?): What to act on, oldest first (reply_received, citation_lost, page_dropped, check_back_done, change_lost, competitor_pages). Pass the cursor back as `after` for only new ones. Without it, the last 7 days. - report: The weekly report's numbers and a draft for the owner (under 300 words): AI answers week on week, Google over 28 days, what was published, changed and pitched, what's for the owner to do. Lead with the outcome. - receipt(improvementId?, articleId?, changeId?): What one change did, on Google (clicks before and after) and in AI answers (citations before and after): an improvement, a published page or a change you logged.
ask
ask_ai
Put questions to ChatGPT, Gemini, AI Overviews, AI Mode, Perplexity or Copilot now, as a buyer in the workspace's market (or location, a country) asks them: whether the answer names or cites the brand and where, the rivals it names, the pages it cites. Answers vary run to run. Each answer is one of the month's AI answers (usage says what's left). action: - ask(question, engine, location?): One question to one AI model. - batch(questions, engines, location?): Up to 20 questions in up to 6 AI models (60 answers at most), with a tally per AI model. Only answers that came back count. - recheck(question, engine, days?): Ask now and again in days (7 when not given, 3 to 30), to see what a change did: two AI answers. get_prompts rechecks reads it. - cancel_recheck(checkBackId): Call off a re-check that hasn't asked again yet.
brand
update_brand
The business's facts everything Sightkick does reads (Settings → Brand Profile). action: - profile(description?, niche?, targetAudiences?, serviceArea?): Description, niche, audiences, service area: what's given changes. - name(name): Rename the brand (its spellings keep the old name). - add_offering(name, type, url?, description?): A product or service. Returns its id. - edit_offering(id, name?, type?, url?, description?): Change an offering (get_settings offerings). - remove_offering(id): Delete an offering and its images. Can't be undone. - offering_image(id, url?, data?): Add a picture to an offering, by public url (up to 8 MB) or base64 data (up to 700 KB): PNG, JPEG, GIF, WebP or AVIF, five per offering. - remove_offering_image(id, imageId): Take a picture off an offering (its imageId from get_settings offerings) and delete it. Can't be undone. - market(country, language): The country and language (get_settings markets). After research it rebuilds it: fresh keyword research, the unwritten plan replanned, the prompts retired for a fresh set. 3 per week. - timezone(timezone): An IANA name (Europe/Berlin): the day pages go out and the send window run on it.
competitors
update_competitors
The rivals the leaderboard and share of voice count (get_visibility competitors). action: - track(domain, name?): Track a rival from the next sweep: its real site's domain and the name buyers use (alsoNamed has both). A past rival comes back with its history. - untrack(competitorId): Take a rival off the board. Its history stays. - set_domain(competitorId, domain?): Move a rival to its real site: domain, or without it the checked suggestion.
connections
update_connections
Where pages publish, Search Console, other agents and the events webhook. A site has one publishing destination: a second is refused, so remove the first to move. check: true reads the site and stores nothing. action: - connect_wordpress(siteUrl, token, authorId?, categoryId?, check?): A WordPress site, with the Sightkick plugin active and its token (wp option get sightkick_token). Guide: https://sightkick.so/connect/wordpress.md - connect_shopify(shopDomain, clientId?, clientSecret?, accessToken?, blogId?, authorName?, check?): A Shopify store's blog, with the owner's app's clientId and clientSecret (or an shpat_ accessToken). Guide: https://sightkick.so/connect/shopify.md - connect_framer(projectUrl, apiKey, collectionId?, blogUrl?, check?): A Framer project's CMS collection, with its address and an API key. Guide: https://sightkick.so/connect/framer.md - connect_webhook(webhookUrl, blogUrl?, bearerToken?): A site on its own code: each page POSTed, signed, to its https webhookUrl. Returns signingSecret and indexNowKey this once. Guide: https://sightkick.so/connect/webhook.md - edit(connectionId, label?, authorId?, categoryId?, token?, blogId?, authorName?, clientId?, clientSecret?, accessToken?, blogUrl?, autoPublish?, apiKey?, webhookUrl?, bearerToken?, removeBearerToken?): Change a connection: what's left out stays, new credentials are checked against the site. - test(connectionId): Check a connection works (a webhook gets a signed test event). - remove(connectionId): Stop publishing there and forget which page is which post (the site keeps its pages, and a later publish there is a new post). Can't be undone. - destination(key, label?, path?, on?): Change a destination (get_settings destinations): rename it, move it to another folder (refused while a live page is in it: its address would change), or switch a page type's off (no new pages go there) or on. - add_destination(label, path): Add one of the owner's own destinations: a folder of blog-style pages beside the blog (Guides at /guides). Up to 10. - remove_destination(key): Remove one of the owner's own destinations once no page is in it (a page type's is switched off instead). - pick_property(siteUrl): Use one of the owner's properties (get_settings search_console_properties). Another one drops the old one's data. - disconnect_search_console: Disconnect Search Console: the property and the Google grant go, the daily sync stops, the numbers read so far stay. Connecting again is the owner's Google sign-in. - webhook(url?, types?, rotateSecret?, remove?): POST each event (get_activity events) to a public https url, signed (x-sightkick-signature: sha256 HMAC of `<x-sightkick-timestamp>.<body>`). The secret comes back once, or on rotateSecret. remove takes it away. - test_webhook: Send the events webhook a signed ping.
console
get_search_console
The site's Google Search Console (get_workspace says whether it's connected). view: - metrics(rangeDays?): Clicks, impressions, CTR and position against the period before, by day, top searches and pages, countries and devices, from the daily sync (28 days when not given). The newest days are provisional. - query(dimensions?, days?, startDate?, endDate?, country?, device?, page?, query?, filters?, searchType?, limit?, startRow?, live?): Search Analytics by query, page, country (usa, gbr, deu), device, date or appearance, filtered, up to 1,000 rows (startRow for more). live asks Google now. - detail(page?, query?): One page's searches against the 28 days before, the site's pages Google shows for one search (several compete), or with neither the searches at positions 8 to 20. - export(days?, startDate?, endDate?, limit?, startRow?): Every page and search pair, up to 5,000 rows per call (nextStartRow). - sitemaps: The sitemaps submitted, live: when Google read each, URLs, errors. - searches(limit?, months?): The site's own searches over 28 days, each with its position, volume, difficulty and Opportunity. Positions 8 to 20 are the nearest wins.
generate
generate_page
Sightkick writes a page (research, outline, draft, judge, revise, screenshots, title card) from the plan's monthly pages, and is refused when none are left (get_workspace plan): then you write it with update_page. Give an unwritten page's articleId, or a title and primaryKeyword for a new one. It takes minutes and returns at once: poll get_pages page. It keeps its slot. A page about a rival is written only with real evidence.
guidance
get_guidance
Sightkick's SEO and GEO playbook by topic: what you may do, the scores, the schedule, structuring a page for AI answers, improving a page instead of writing a new one, and the content rules Sightkick's writer follows (evidence about rivals, comparison, alternatives and list pages, every article): the method behind planning and writing.
jobs
update_jobs
What Sightkick does by itself (Settings → Automation), either way. None of it limits what you or the owner do. action: - job(job, mode): One job: articles (Sightkick's pages: scheduled plans them on the schedule two weeks ahead and they go live on their day, unscheduled writes them into Unscheduled for you or the owner to give a day), keywords (auto research: auto, manual), improvements (auto, manual, with dead-link fixes), outreach (auto sends its pitches, manual waits). - floor(floor): The lowest Opportunity Sightkick pitches by itself, 20 to 70. - warmup(on, perWeek?): A young site's pace of new pages: on (perWeek 1 to 7, or left out for the recommended pace) or off.
pages
get_pages
The site's pages and their schedule. A page's status is how far its writing is: planned (not written), writing, ready (written), published, failed, retired. Apart from it, a page has a day (on the schedule, scheduledDate) or none (Unscheduled), and sightkickWrites says whether Sightkick writes it (or wrote it): off, it's yours or the owner's to write before its day, or it goes back to Unscheduled as missed. view: - list(status?, limit?, offset?): Pages by Opportunity, with the question each answers, its URL, Google's index verdict, the duplicate check, the plan's verdict and handsOffUntil. Every status but idea (a keyword's page nobody planned) unless asked. Up to 200, page with offset. - page(articleId, includeContent?): One page: head, status and score, publications, keywords, brief, plan, and once live its URL, index verdict and Search Console. includeContent adds the body and its bodyHash, which a live page's edit needs. - check_topic(title, primaryKeyword, question?, articleType?): Does the site already answer this? The page it repeats (improve that one instead) or null. 50 per day. - revisions(articleId): Every agent edit to a live page, newest first. The newest can be undone (publish_page undo_edit) while nobody changed the page since. - receipt(articleId): What a published page did on Google and in AI answers since it went live. - shipped(limit?): Pages registered as shipped elsewhere (update_page register), with pageId. - calendar: Every page on the schedule from today on, by day. fixedDay: put on that day by hand; else it took the next open slot. - schedule: The publishing schedule: Pages per month (its slots, spread evenly over each month), the hour pages go out, Sightkick's pages (scheduled or unscheduled), the next 30 days slot by slot, Unscheduled (pages without a day) and pages waiting for a slot. - images(articleId): A page's images in publish order, featured first.
publish
publish_page
Put pages on the site and take them down, at any time. Every page goes live. action: - publish(articleId, connectionId?): Publish a written page to the connected site. Returns its URL. - republish(articleId, baseHash, connectionId?): Send a live page's changes to the site, in place. Refused when the page changed since baseHash was read. - take_down(articleId, into?, intoUrl?): Retire a page for good: off every connected site (a draft there, never deleted), never written, scheduled or linked again, its subject remembered. into: the live page its address should lead to. intoUrl instead: any live address on the site, for a landing page that isn't one of the pages here. - undo_edit(revisionId): Put a live page back as it was before an agent edit (get_pages revisions), while nobody changed it since. Then republish.
schedule
schedule_page
The publishing schedule: slots from Pages per month, and every ready page on the schedule out on its day, live, exactly as written, whoever wrote it. A planned page there is written that morning by Sightkick if sightkickWrites is on; one of yours not written by its day goes back to Unscheduled as missed. A page without a day waits in Unscheduled. action: - place(articleId, at, date?): Put a page on the schedule or move it: at next (the next open slot) or day (that date, a slot or not, however many pages it already holds). - unplace(articleId): Take a page off the schedule, to Unscheduled. Its status stays. - set_slots(pagesPerMonth?, publishHour?): Pages per month (1 to 120, at least what Sightkick writes a month): its slots spread evenly over each month, 15 every second day, 30 daily. And the hour pages go out (6 to 23).
score
score_page
Grade a page's draft on the four pillars (answers the search, says something new, can be trusted, easy to quote): overall 0 to 100, each pillar's verdict, and the checklist: what to fix, by name, and for each pillar under 80 what would raise it. Write, score, clear the checklist, score again. 25 per day.
send
send_outreach
A real email to a stranger from the workspace's inbox, in the owner's name. Any time, whatever Auto outreach says. Not on the free trial. action: - pitch(id, force?): Book a prepared pitch into the send queue: out in the next business-hours slot, then Sightkick runs the follow-ups and replies. One scoring under the Opportunity floor (which steers Sightkick's own pitches and the app's buttons) goes with force: true. - reply(id, body?, to?): One reply now, threaded under their mail, on a thread mail went out on (a first email is a pitch): body, or the waiting draft (an offer's answer included). To whoever wrote last, or any address in to. Refused for an address on the do-not-contact list, or when the thread's inbox is gone. Can't be undone. - follow_up(id, body?): Send the owed follow-up at the send window's next opening.
settings
get_settings
The workspace's settings as the app's Settings show them. writing is the house style every page follows (author, voice, key facts, rules). view: - brand: The brand profile: name, description, niche, audiences, service area, key facts, market, timezone. - writing: The author, the voice, the key facts and the rules. - images: The title card's colour and font, and screenshots on Sightkick's own pages. - offerings: The products and services, with their images. - markets(country?): The country and language pairs Sightkick supports. - sites: Where pages publish: each connection's platform, site and status. - destinations: The site's folders beside the blog that pages go to: the page types' (Comparisons at /vs …, each with its name, folder and on/off) and the owner's own, which hold blog-style pages. key goes in update_page destination. pages: how many are in it. blogPath: the blog's own folder. - search_console: Search Console: connected or not, the property, any sign-in error, and the owner's link. - inbox: The sending inbox: signature, daily limit, the send window, the opt-out line, the postal address. - sequences: The pitch sequences (as get_outreach sequences). - agents: The agents connected to the workspace, and when each was last seen. - jobs: Sightkick's job settings (its pages scheduled or unscheduled), the opportunity floor and the warm-up. - usage: Every allowance: used, left, when it refills, the day's limits. - models: The tracked AI models (as get_prompts models). - webhook: The events webhook: its URL, types, health. - plan: The plan as Settings → Plan shows it: its amounts, price per month, cycle, renewal or trial end, a booked downgrade, a pause or a cancel, the steps each amount sells, and the link for what is the person's (their first card, a new card, the invoices). - notifications: When Sightkick emails the owner: the address, a reply that needs a person, the Monday brief, the nudges. - search_console_properties: The owner's Search Console properties that cover the site. - invite_agent: The line to hand another agent to connect it, and its guide. - mailbox_link: Connecting a mailbox is the owner's: the app page and a line to hand them. - managed_domains: The managed inbox (an add-on: update_account change_plan managedInbox): domains free to take for it, with their yearly price. - check_domain(domain): Whether one domain is free to take for the managed inbox. - preview_plan(articles?, prompts?, aiModels?, keywordSearches?, contactsFound?, managedInbox?, interval?): What a change would charge today and the price per month after it, without changing anything. A change that lowers the bill waits for the renewal.
visibility
get_visibility
How AI models (ChatGPT, Gemini, AI Overviews, AI Mode) answer the tracked buyer prompts. Sampled daily: judge windows, not single days. view: - summary(days?): Presence, citations, recommendations and sentiment, per AI model, top cited sources and rivals. Lead with unbranded (intentSplit): branded prompts only reach people who know the brand. - gaps: Last week's gaps: prompts where rivals are named and the brand isn't, each planned, covered or offpage. - gap_candidates(limit?): The prompts answers left the brand out of over 14 days, worst first: the rivals named instead and whether a page can win it (onpage) or third-party pages decide (offpage). - competitors: The tracked rivals, past ones, and alsoNamed: brands the answers keep naming that nobody tracks. domainCheck suspect = the saved domain looks wrong. - sources(days?): The domains and pages AI answers cite, with their owner and page type, against the window before: where answers are built from. - mentions(days?, engines?, sentiments?, cited?, recommended?, limit?): Answers that named the brand unasked (prompts naming it left out, as in the headline), newest first: the prompt, AI model, sentence, place, sentiment, cited pages. - rival_pages(days?, competitorId?): Pages tracked rivals added, changed or took down, read from their sitemaps every Monday (7 days when not given).
web
check_web
Look at Google, a page or the sitemap as it is right now. rank spends one of the plan's rank checks (30 per day), the other checks are free. check: - rank(keyword, depth?): Where the site ranks for a search now (to position 30, depth 10 to 50), the top 10 and the AI Overview's sites, beside Search Console's average. 30 per day. - index(url): Whether one of the site's pages is in Google's index, and why not, with the day Google last read it. 50 per day. - serp(keyword): One keyword's Google page: the top 10 with each page's type and whose it is, the AI Overview and its sources, People Also Ask, the keyword's numbers, and the tracked prompts asking it: what a page for the keyword competes with. - page(url): Read a page as a crawler without JavaScript: title, meta, canonical, headings, words, schema, and on the site's own pages what keeps it out of Google or AI answers. Another site's page: its outline only. 50 per day. - crawl(sitemapUrl?, limit?): Fetch every page the site's sitemap lists: status, redirect, title, canonical, noindex, words and the problems. Up to 500 pages, 5 crawls per day, own site only.
workspace
get_workspace
The workspace at a glance: the site, the plan as its amounts and what's left this month (a plan has amounts, no package name), each of Sightkick's jobs (auto, manual, off) and sightkickPages (scheduled: Sightkick plans its pages on the schedule and they go live on their day, unscheduled: written, they wait without a day), the warm-up, what setup still lacks, the connections, and whatsNew: the events and Sightkick's own work since this agent's last session, with a cursor. contentEnabled false means no plan is running: reads work, the rest waits for the plan, which the person starts with their card (get_settings plan gives the link). A job's setting only says what Sightkick does by itself: you can act on any job at any time. connection says what this connection may do (an API key's permissions).
writing
update_writing
The brand's rules for whoever writes, Sightkick or you (Settings → Writing, Images). voice, key_facts and rules replace the whole text: read get_settings writing first. action: - author(name, credentials?, sameAs?): The byline: name, credentials, up to 6 https profiles (sameAs). - remove_author: Pages fall back to the brand's byline. - voice(text): How every page sounds, in a few sentences. - key_facts(keyFacts): The facts every page may state: prices, features, who it's for. - rules(add?, replace?): The do's and don'ts: add one line, or replace them all. - images(screenshots?, brandColor?, font?): The title card's colour and font, and screenshots on Sightkick's own pages: fields left out stay.

Endpoints

URLTransportStateLatencyChecked
https://app.sightkick.so/mcp streamable-http answering 49 ms 3 min ago

Alternatives to Sightkick

same job, measured the same way
RankControl
by rankcontrol

Plan, write and publish SEO articles on your own site, and track your Google and AI search traffic.

388 installs/wk answering
SEO Rank Fixer
by seorankfixer

Google Search Console performance and the SEO fixes worth the most clicks, ranked for your sites.

answering
SEOStudio
by digitalfrontllp

An AI SEO agent that gets your site found on Google and ChatGPT.

answering
Ranksmile
by tryranksmile

AI visibility, Google rankings, Search Console and site audit data for your SEO agent.

answering
Google Search Console
by b77

Search rankings, clicks, and indexing for your site — in chat.

answering
WireCat Google Calendar
by wirecat

Your Google Calendar for agents: sync, search and change events. Sign in with the gcal CLI first.

3 901 installs/wk local only
iSearchFrom
by isearchfrom

Free SEO tools for AI agents: Google results from any location, plus rank, ad and AI visibility.

answering
AppScreenStudio
by appscreenstudio

Design App Store and Google Play screenshots with your AI agent in the AppScreenStudio editor.

49 tools answering

Sightkick — questions

Answers built from our own checks of this server.

What can Sightkick do?
It exposes 37 tools, read directly from the server on our last check. Among them: ask_ai, check_web, generate_page, get_activity, get_backlinks, get_guidance and 31 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Sightkick mostly used for?
Its tools cluster around outreach, reports and prompts. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Sightkick working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 0 of 91 checks got a reply (0.0%), average response time 49 ms. The bar chart above shows every period we have measured.
The registry lists Sightkick as active — why does it not respond?
The official MCP registry stores what the author submitted; it does not verify that the server still runs. We check the endpoint ourselves, and this one does not answer. Catalogues that copy the registry without checking will show it as working.
How do I connect Sightkick?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Sightkick need an API key?
No. Sightkick completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 37 of them are readable on this page. This is what we observed, not what the docs claim.
Is Sightkick open source?
The code is open source: it is published under the MIT licence and 0 stars on GitHub. The licence covers the code in the repository, not the hosted service at app.sightkick.so, which runs on its operator's own terms.