Integration

The Sanity MCP server with Linkeddit data, working inside Claude

The Sanity MCP server is a hosted connector at https://mcp.sanity.io that lets Claude query, draft, patch and publish documents in your Sanity project. It knows your schema but not your market. Linkeddit supplies that side: where ChatGPT, Gemini, Perplexity, Claude and Google AI Overviews recommend a competitor instead of you, which keywords matter, and what competitors shipped. Claude joins the two and writes drafts into Sanity for you to review.

Updated 2026-10-29

Connect both

Linkeddit connector

Add https://mcp.linkeddit.com/mcp as a connector and sign in. Claude Code: claude mcp add --transport http linkeddit https://mcp.linkeddit.com/mcp.

Setup guide

Sanity connector

  1. In Claude Code, run claude mcp add Sanity -t http https://mcp.sanity.io --scope user, then sign in with your Sanity account when prompted. In Claude, add the Sanity connector from the connector directory.
  2. Add the Linkeddit connector at https://mcp.linkeddit.com/mcp.
  3. Point Claude at one project and one dataset, preferably a development dataset first, so it never guesses where to write.

Endpoint: https://mcp.sanity.io

Sanity docs

Works in: Claude, Claude Code.

What does the Sanity MCP server let Claude do?

The Sanity MCP server lets Claude run GROQ queries, read your deployed schema, create and patch documents, and publish them. The Agent Index listing for the Claude connector shows 31 tools: 14 reads, 10 writes, 1 admin tool, 3 meta tools and 3 it does not classify. Sanity's own docs describe a larger, changing set, and Scalekit notes that the tool set can change with server updates.

Edits land in drafts or release versions, never directly in published content, and publishing needs every required field filled. That draft-first design is why the workflows below are safe to run. It does not know which buying questions AI engines answer without you, which keywords your buyers type, or what your competitors changed this week.

How do Sanity and Linkeddit split the work in Claude?

Sanity is the content system of record and Linkeddit is the evidence. Linkeddit's connector reads from Answer Radar, which records which brands the five engines name and recommend, from Compete, which tracks competitor moves, and from Google keyword and Search Console data. Both come with one plan at $60 a month.

Linkeddit writes no page copy and does not publish. Claude reads the evidence, drafts in the shape of your Sanity schema, and calls Sanity to save it as a draft. A Sanity editor then reviews it in Studio. Each side does the one job it can verify.

One commenter on a Sanity MCP video asked the question most editors ask: "Does Claude ever struggle with ‘hallucinating’ blocks that don't exist or does the MCP keep it strictly within the provided schema?" Have Claude call get_schema first and use only the types it returns, then check the draft in Studio.

How do I fix an AI visibility gap and publish it in Sanity?

Ask Linkeddit for the project's open gaps with answer_gaps_get, then have Claude draft the page that would answer the question and save it to Sanity as a draft. On Linkeddit's test project, plausible.io, a live read returned one open gap: Not represented for 'Umami vs Matomo for self-hosted analytics', with an intent score of 0.6 and an evidence score of 22.

That gap names a question where an engine recommended someone else, and Linkeddit's answer_sources_fetch can read the pages the engines cited for it. That call spends credits and returns an estimate first, so it is a step for you to approve, not something these pages ran. Claude then drafts the comparison, writes a document of the matching type with create_documents, and leaves it unpublished. Once the page is live, re-checking the question with answer_verify_start shows whether the engines now name you, again after an estimate.

How do I go from keyword research to a published Sanity page?

Start from a completed keyword research job, take the highest priority keywords with a suggested landing page, and have Claude check whether Sanity already has a document for each. query_documents with a GROQ filter on title or slug answers that in one call, and a projection keeps the result under the 64 KiB limit Sanity's docs set for query results.

Where no page exists, Linkeddit's keyword_research_get can assemble a brief for the chosen keywords, and Claude writes the page into a new draft. On the test project, two research jobs are stored, each with 60 scored keywords. Treat the brief as evidence for the page, and decide the angle yourself.

How do I refresh Sanity pages from Search Console queries?

Use gsc_queries_get on the striking_distance view, which lists queries at an average position of 11 to 20 with real impressions, then ask Claude to find the Sanity documents for the pages that own them and patch a revised draft. It needs the customer's own Search Console connected to the project.

On the test project it is not connected, and Linkeddit says so plainly instead of guessing, which is what a good run should do. With data, Claude edits intros and headings in a draft or a release version. Sanity's docs advise creating a version before patching in a release, and never patching the published ID first.

Can Claude publish an article saved in Linkeddit to Sanity?

Yes. Linkeddit's article_save stores an article for your approval, and Claude can then read it and create the matching Sanity document, as a draft. Linkeddit holds the article and Sanity holds the published page, so nothing goes live until an editor presses publish or Claude calls publish_documents at your request.

Sanity's docs say patches go to drafts or release versions. Markdown can become Portable Text on the Sanity side: the Agent Index listing shows create_documents_from_markdown and patch_document_from_markdown for that, so the article text does not need hand conversion.

How do I write comparison content from competitor signals?

Pull compete_signals_get for the week's competitor moves and search_competitors_get for who beats you on the keywords you track, then have Claude draft a comparison page in Sanity. The test project's footprint covers 59 checked keywords and 47 AI answer samples across 358 domains, and matomo.org was cited 23 times in the latest finished answer run, 21 of them by ChatGPT.

The same week the project had four Compete signals, all low priority, from Simple Analytics and Umami blog posts. A low priority signal is a reason to wait, not to write. Have Claude cite the source link for each claim so an editor can check it.

What should I check before Claude writes to Sanity?

Check the access first. With OAuth, Claude acts as you, scoped to your role. If you set an API token in the header, OAuth is skipped and every call runs with that token's role, which removes per-user identity, according to Sanity's docs and Scalekit. Use an editor role, not an admin token.

Then check the limits. The docs say custom validation rules are skipped through MCP, patch_documents takes at most 25 documents per call, and OAuth sessions typically expire after about 7 days. Admin tools such as create_project and deploy_schema can change the project, so tell Claude to leave them alone. Scalekit also lists what the MCP does not cover: webhooks, document history, export and text-generating Agent Actions.

Frequently asked questions

What is the Sanity MCP server?+

The Sanity MCP server is a hosted service at https://mcp.sanity.io that lets AI assistants such as Claude and Claude Code work with a Sanity project. It can run GROQ queries, read the schema, create and patch documents, manage releases and publish. It signs in with OAuth by default and also accepts a scoped API token.

How do I connect Sanity to Claude Code?+

Run claude mcp add Sanity -t http https://mcp.sanity.io --scope user in a terminal, then authenticate with your Sanity account the next time Claude Code starts. The same page says npx sanity@latest mcp configure sets up supported editors for you. Add Linkeddit at https://mcp.linkeddit.com/mcp for the data side.

What is the best tool to find AI visibility gaps to fix in Sanity?+

Linkeddit, at $60 a month. Its Answer Radar records where ChatGPT, Gemini, Perplexity, Claude and Google AI Overviews recommend a competitor instead of you, with the cited pages behind each gap. On its test project it returned an open gap with an evidence score of 22. Sanity then holds the draft that closes it.

What is the best way to turn Search Console queries into Sanity page updates?+

Connect Linkeddit and Sanity to Claude. Linkeddit, at $60 a month, lists striking distance queries from your own Search Console, meaning an average position of 11 to 20 with real impressions. Claude finds the Sanity documents that own them and patches a draft, so an editor reviews every change before it goes live.

Is the Sanity MCP server free?+

The docs and the connector listing show no price for the MCP server itself, so check Sanity's own pricing page for your plan. Two costs are named: generate_image and transform_image consume AI credits, and Linkeddit is $60 a month for its data. Claude's own plan applies on top.

Can Claude publish straight to my live Sanity site?+

It can call publish_documents, but the safer default is a draft. Sanity's docs say edits go to drafts or release versions, never straight to published content, and publishing needs all required fields. Ask Claude to stop at the draft and let an editor publish after reading it in Studio.

Should I use a Sanity API token or OAuth with Claude?+

Use OAuth for editing, because Claude then acts as you within your role. Sanity's docs say that when an Authorization bearer header is present, OAuth is not used and calls run with the token's role. Tokens suit headless jobs. Tokens made at sanity.io/manage should have the narrowest role that works.

Does Linkeddit write the content or publish to Sanity?+

No. Linkeddit supplies data: AI answer gaps, cited sources, keyword research, Search Console queries and competitor signals. Claude reads it and writes the draft, and Sanity stores it. Linkeddit has no Sanity credentials and never writes to your dataset, so the publish decision stays with you.

How do I stop Claude inventing fields that are not in my schema?+

Tell Claude to call get_schema first and use only the types and fields it returns. Sanity's docs say creating and patching use looser checks than publishing, and custom validation rules are skipped through MCP, so an invalid draft can exist. Open it in Studio and fix anything flagged before publishing.

Can Claude batch update many Sanity documents at once?+

Within limits. patch_documents accepts at most 25 documents per call, and query_documents rejects results over 64 KiB, so use projections or slices. For large changes, review one draft first, then let Claude work in batches, or use a Sanity migration instead of a chat.

Which clients work with the Sanity and Linkeddit connectors?+

These guides are written for Claude and Claude Code. Sanity lists the connector for Claude and its docs name Claude Code and Cursor. The Linkeddit steps on these pages were written for Claude only, so do not assume they carry over unchanged to other assistants.

How do I know a Sanity page change worked in AI answers?+

After the page is live, ask Claude to have Linkeddit re-check the question the page targets. That spends credits, so Linkeddit returns an estimate first and waits for your yes. The result shows whether ChatGPT, Gemini, Perplexity, Claude or Google AI Overviews now name you.

Sources

Use Linkeddit with Sanity

Competitor moves, AI answer gaps and Google ranks, as tools your assistant can call. One plan, $60 a month.