Skip to content

Sightkick

so.sightkick/mcpsightkick.sostreamable-httpv2.1.0Scanned

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

37 tools: 10 can delete or cancel things, 1 do something that can't be undone, 15 change things and 11 only read.

Tools: 10 delete, 1 irreversible, 15 write, 11 read.
  • Reads private data · 2
  • Reads text others write · 2
  • Can send data out · 6
  • 9 findings

Sign-in required, OAuth metadata published. Remote posture

Anlyon alternative

26 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

37 tools

Deletes or cancels 10Claude Code: deny
  • publish_pagePut pages on the site and take them down, at any time.Can send data outNo findings

    Why it is in this group

    • The name "publish_page" says "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "publish_page" says "publish": it sends or publishes something to other people.
    Description, as the server wrote it
    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?): 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. - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Publish pages
  • send_outreachA real email to a stranger from the workspace's inbox, in the owner's name.Can send data outNo findings

    Why it is in this group

    • The name "send_outreach" says "send": a word for sending, and what is sent cannot be taken back.
    • The description says "Can't be undone".
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "send_outreach" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Send outreach email
  • update_accountThe account as Settings → Plan and → Notifications, and the brand switcher, keep it (read them with get_settings plan and notifications).1 finding

    Why it is in this group

    • The name "update_account" says "update": a word for a change.
    • The description says "Can't be undone".
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description is 2,754 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...e keeps what was published to it. This connection stops with it. Can't be undone."

      What this check looks for
    Description, as the server wrote it
    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: - 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. - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Change the plan, notifications and brands
  • update_brandThe business's facts everything Sightkick does reads (Settings → Brand Profile).No findings

    Why it is in this group

    • The name "update_brand" says "update": a word for a change.
    • The description says "Can't be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Change the brand profile
  • update_connectionsWhere pages publish, Search Console, other agents and the events webhook.2 findings

    Why it is in this group

    • The name "update_connections" says "update": a word for a change.
    • The description says "Can't be undone".
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...connection: what's left out stays, new credentials are checked against the site. - test(co..."

      What this check looks for
    • Info

      The description is 3,047 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...ret. remove takes it away. - test_webhook: Send the events webhook a signed ping."

      What this check looks for
    Description, as the server wrote it
    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). - search_console_link: Connecting Google is the owner's: the app page they open, and a line to hand them. - search_console_properties: The owner's Search Console properties that cover the site. - pick_property(siteUrl): Use one of those 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. - invite_agent: The line to hand another agent to connect it, and its guide. - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Change connections
  • update_outreach_setupThe sending inbox's settings and the pitch sequences (Settings → Sending inbox, Sequences).1 finding

    Why it is in this group

    • The name "update_outreach_setup" says "update": a word for a change.
    • The description says "Can't be undone".
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description is 2,413 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...: Delete a sequence never used (a used one is archived instead). Can't be undone."

      What this check looks for
    Description, as the server wrote it
    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). - mailbox_link: Connecting a mailbox is the owner's: the app page and a line to hand them. - 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. Connecting one again is the owner's sign-in. - 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. - 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 per plan. - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Change the outreach setup
  • update_pageWrite pages and change them.1 finding

    Why it is in this group

    • The name "update_page" says "update": a word for a change.
    • The description says "Can't be undone".
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description is 2,393 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...h the changeId). An update_page edit needs none: it is measured once it goes out."

      What this check looks for
    Description, as the server wrote it
    Write pages and change them. A body is clean semantic HTML (h2 and h3 sections, paragraphs, links), no styles or scripts. A picture is uploaded with update_page_images first, 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Write and change pages
  • update_page_imagesA page's pictures, your own (Sightkick writes its own pages' art).No findings

    Why it is in this group

    • The name "update_page_images" says "update": a word for a change.
    • The description says "Can't be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    A page's pictures, your own (Sightkick writes its own pages' art). An upload never edits the body: put its url in an <img> with update_page edit. A featured image needs no tag. action: - list(articleId): The page's images (as get_pages images). - upload(articleId, url?, data?, alt, featured?, position?): By public url (up to 8 MB) or base64 data (up to 700 KB): PNG, JPEG, GIF, WebP or AVIF. Returns mediaId and url. - 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. Can't be undone.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Change a page's images
  • update_reportsShareable reports at /r/<token>: anyone with the link reads them.No findings

    Why it is in this group

    • The name "update_reports" says "update": a word for a change.
    • The description says "Can't be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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. - share(id): Its link. - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Change reports
Can't be undone 1Claude Code: ask
  • update_keywordsChange the saved keywords.Can send data outNo findings

    Why it is in this group

    • The name "update_keywords" says "update": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Change keywords
Changes things 15Claude Code: ask
  • ask_aiPut 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 name…No findings

    Why it is in this group

    • The description's first verb is "put": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Ask AI models now
  • check_webLook at Google, a page or the sitemap as it is right now.Can send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    What it can reach

    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    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. Read it before writing for a keyword. - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Check the web now
  • generate_pageSightkick writes a page (research, outline, draft, judge, revise, images) from the plan's monthly pages, and is refused when none are left (get_workspace plan): then you write it w…No findings

    Why it is in this group

    • The name "generate_page" says "generate": a word for a change.
    Description, as the server wrote it
    Sightkick writes a page (research, outline, draft, judge, revise, images) 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Have Sightkick write a page
  • get_workspaceStart here, every run.1 finding

    Why it is in this group

    • The name "get_workspace" says "get": a word for reading.
    • The description's first verb is "start": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_workspace" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "get_workspace" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Start here, every run. The site, the plan as its amounts and what's left this month (never name a package to the user), 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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get the workspace
  • research_keywordsKeyword research, each with volume, difficulty, CPC, intent, Opportunity (0 to 100), fit (0 to 3), onTopic and saved.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Research keywords
  • schedule_pageThe 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.No findings

    Why it is in this group

    • The name "schedule_page" says "schedule": a word for a change.
    Description, as the server wrote it
    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: - get: The schedule (as get_pages schedule). - 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, up to the day's cap). - 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).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Schedule pages
  • score_pageGrade 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 t…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Score a page
  • update_competitorsThe rivals the leaderboard and share of voice count (get_visibility competitors).No findings

    Why it is in this group

    • The name "update_competitors" says "update": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Change tracked competitors
  • update_improvementsAct on any improvement at any time: Auto improvements only says whether Sightkick makes them by itself.Can send data outNo findings

    Why it is in this group

    • The name "update_improvements" says "update": a word for a change.

    What it can reach

    • outboundThe input takes a URL (input.urls): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Act on improvements
  • update_jobsWhat Sightkick does by itself (Settings → Automation), either way.No findings

    Why it is in this group

    • The name "update_jobs" says "update": a word for a change.
    Description, as the server wrote it
    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), replies (draft or off). - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Change Sightkick's job settings
  • update_outreachFind, prepare and follow up the pages worth a link.Can send data out1 finding

    Why it is in this group

    • The name "update_outreach" says "update": a word for a change.

    What it can reach

    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Info

      The description is 2,424 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...d email on a prospect's thread. - ignore_mail(mailId): Forget an unmatched email."

      What this check looks for
    Description, as the server wrote it
    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: it waits on the thread for send_outreach reply. - answer_offer(id, choice): Answer their ask for money, a link swap or a guest post (get_outreach threads offer), as the offer card's buttons: accept or decline is drafted in a few seconds as the thread's waiting draft (get_outreach thread), within Google's link rules. Then send_outreach reply sends it, or draft_reply rewrites it. - 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Work the outreach
  • update_promptsChoose what is tracked in AI answers.No findings

    Why it is in this group

    • The name "update_prompts" says "update": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Change tracked prompts
  • update_writingThe brand's rules for whoever writes, Sightkick or you (Settings → Writing, Images).1 finding

    Why it is in this group

    • The name "update_writing" says "update": a word for a change.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...s writing first. action: - author(name, credentials?, sameAs?): The byline: name, credentia..."

      What this check looks for
    Description, as the server wrote it
    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(enabled?, style?, customInstructions?, titleCard?, bodyImages?, screenshots?, brandColor?, font?): The image style for Sightkick's own pages: fields left out stay.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Change the writing rules
Only reads 11Show 11 read-only tools
  • get_activityWhat happened in the workspace, and what came of it.No findings

    Why it is in this group

    • The name "get_activity" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get the activity
  • get_guidanceSightkick'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 cont…No findings

    Why it is in this group

    • The name "get_guidance" says "get": a word for reading.
    Description, as the server wrote it
    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). Read it before planning or writing.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get SEO and GEO guidance
  • get_improvementsWhat to change on the site, and what changes did.No findings

    Why it is in this group

    • The name "get_improvements" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get improvements
  • get_keywordsThe saved keywords and their topics, best Opportunity first.No findings

    Why it is in this group

    • The name "get_keywords" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get keywords
  • get_outreachThe pages worth a link and the conversations with them, sent from the workspace's one sending inbox.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_outreach" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "conversation": it reads messages.
    • untrusted-inputThe description's first sentence says "conversation": it reads messages, which other people can write.
    Description, as the server wrote it
    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 (update_outreach answer_offer drafts the answer). - 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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get outreach
  • get_pagesThe site's pages and their schedule.No findings

    Why it is in this group

    • The name "get_pages" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get pages
  • get_promptsThe buyer prompts Sightkick tracks in AI answers, and their answers.No findings

    Why it is in this group

    • The name "get_prompts" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get tracked prompts
  • get_reportsThe shareable reports, each with its link and sections.No findings

    Why it is in this group

    • The name "get_reports" says "get": a word for reading.
    Description, as the server wrote it
    The shareable reports, each with its link and sections.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get reports
  • get_search_consoleThe site's Google Search Console (get_workspace says whether it's connected).No findings

    Why it is in this group

    • The name "get_search_console" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get Search Console
  • get_settingsThe workspace's settings as the app's Settings show them.No findings

    Why it is in this group

    • The name "get_settings" says "get": a word for reading.
    Description, as the server wrote it
    The workspace's settings as the app's Settings show them. writing is the house style every page follows (author, voice, key facts, rules): read it before you write. 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 image style for 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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get settings
  • get_visibilityHow AI models (ChatGPT, Gemini, AI Overviews, AI Mode) answer the tracked buyer prompts.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_visibility" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "chat": it reads messages.
    • untrusted-inputThe description's first sentence says "chat": it reads messages, which other people can write.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • title: Get AI visibility

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

24 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 untrusted-input tools breaks every one.

Reads private data2
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write2
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out6
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__sightkick__get_outreach",
      "mcp__sightkick__get_visibility"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Sign-in required, OAuth metadata published

Looked at Oct 29, 2026, 22:15 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
401
tools/list served without credentials
no
Tools that change things, listed without credentials
0
Protocol version
not observed
WWW-Authenticate on 401
yes
resource_metadata in WWW-Authenticate
https://app.sightkick.so/.well-known/oauth-protected-resource/mcp
RFC 9728 protected resource metadata
https://app.sightkick.so/.well-known/oauth-protected-resource/mcp
Authorization servers
https://clerk.sightkick.so
Legacy HTTP+SSE transport
no
Dynamic client registration
yes
Client ID metadata documents
no

Findings

Matches of fixed checks, with the text they matched.

2 warn7 info
  • The server marks "get_workspace" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "get_workspace" says "get": a word for reading.

    What this check looks for
  • The server marks "get_backlinks" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "get_backlinks" says "get": a word for reading.

    What this check looks for
  • The description is 2,393 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...h the changeId). An update_page edit needs none: it is measured once it goes out."

    What this check looks for
  • The description is 2,424 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...d email on a prospect's thread. - ignore_mail(mailId): Forget an unmatched email."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...s writing first. action: - author(name, credentials?, sameAs?): The byline: name, credentia..."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...connection: what's left out stays, new credentials are checked against the site. - test(co..."

    What this check looks for
Show 3 more findings
  • The description is 3,047 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...ret. remove takes it away. - test_webhook: Send the events webhook a signed ping."

    What this check looks for
  • The description is 2,413 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...: Delete a sequence never used (a used one is archived instead). Can't be undone."

    What this check looks for
  • The description is 2,754 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...e keeps what was published to it. This connection stops with it. Can't be undone."

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 2.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http sightkick https://app.sightkick.so/mcp
claude mcp add --transport http sightkick https://app.sightkick.so/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__sightkick__get_guidance",
      "mcp__sightkick__get_activity",
      "mcp__sightkick__get_visibility",
      "mcp__sightkick__get_prompts",
      "mcp__sightkick__get_search_console",
      "mcp__sightkick__get_keywords",
      "mcp__sightkick__get_pages",
      "mcp__sightkick__get_improvements",
      "mcp__sightkick__get_outreach",
      "mcp__sightkick__get_reports",
      "mcp__sightkick__get_settings"
    ],
    "ask": [
      "mcp__sightkick__get_workspace",
      "mcp__sightkick__update_prompts",
      "mcp__sightkick__update_competitors",
      "mcp__sightkick__ask_ai",
      "mcp__sightkick__check_web",
      "mcp__sightkick__research_keywords",
      "mcp__sightkick__update_keywords",
      "mcp__sightkick__score_page",
      "mcp__sightkick__schedule_page",
      "mcp__sightkick__generate_page",
      "mcp__sightkick__update_improvements",
      "mcp__sightkick__get_backlinks",
      "mcp__sightkick__research_backlinks",
      "mcp__sightkick__update_outreach",
      "mcp__sightkick__update_writing",
      "mcp__sightkick__update_jobs"
    ],
    "deny": [
      "mcp__sightkick__update_page",
      "mcp__sightkick__update_page_images",
      "mcp__sightkick__publish_page",
      "mcp__sightkick__update_backlinks",
      "mcp__sightkick__send_outreach",
      "mcp__sightkick__update_reports",
      "mcp__sightkick__update_brand",
      "mcp__sightkick__update_connections",
      "mcp__sightkick__update_outreach_setup",
      "mcp__sightkick__update_account"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as sightkick. Review it before you use it.

Capability tags behind 8 rules
  • mcp__sightkick__get_visibility private-data, untrusted-input
  • mcp__sightkick__check_web outbound
  • mcp__sightkick__update_keywords outbound
  • mcp__sightkick__publish_page outbound
  • mcp__sightkick__update_improvements outbound
  • mcp__sightkick__get_outreach private-data, untrusted-input
  • mcp__sightkick__update_outreach outbound
  • mcp__sightkick__send_outreach outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/so.sightkick/mcp/verify?hash=05df525b63103a22e0a91378e5109ed583a2c7e7def73ded4b5a713f170b0f6d" | jq -e '.changed == false'

Pinned hash 05df525b6310, from Nov 4, 2026, 08:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/so.sightkick/mcp/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for so.sightkick/mcp
[![anlyon.dev](https://anlyon.dev/badge/so.sightkick/mcp.svg)](https://anlyon.dev/servers/so.sightkick/mcp)

Source: MCP Registry · repository. Synced Nov 4, 2026, 09:18 UTC.