CCM
/MCP
SkillsMCPMarketplacesDigestLearnAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Learn
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Sanity

sanity-io/agent-toolkit
41 toolsHTTPregistry active
Summary

Connects your MCP-compatible editor directly to Sanity's content management platform through their official API. Exposes tools for running GROQ queries, creating and patching documents, deploying schemas, managing publish states, and generating images. You can query content, push schema changes, and manipulate documents without leaving your editor. Includes comprehensive agent skills covering GROQ optimization, Visual Editing setup, Portable Text handling, and framework integrations. Works with Cursor, Claude Code, VS Code, and other MCP clients. Particularly solid if you're building content-heavy applications and want your AI assistant to understand Sanity's conventions around content modeling and performance patterns.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →

Tools

Public tool metadata for what this MCP can expose to an agent.

41 tools
get_schemaGet the full schema of the current Sanity workspace3 params

Get the full schema of the current Sanity workspace

Parameters* required
typestring
Optional: Specific type name to fetch. If not provided, returns the full schema without detailed field definitions. Full field definitions are only available when requesting a specific type.
resourceobject
Resource information indicating which project id and dataset to target
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
list_workspace_schemasGet a list of all available workspace schema names1 params

Get a list of all available workspace schema names

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
deploy_schemaDeploy Sanity schema directly to cloud (project and dataset). IMPORTANT: Only use this for projects WITHOUT a local Sanity Studio. If sanity.config.ts/js or a schema directory exists, generate local schema files instead. Can be called iteratively to add/overwrite types.3 params

Deploy Sanity schema directly to cloud (project and dataset). IMPORTANT: Only use this for projects WITHOUT a local Sanity Studio. If sanity.config.ts/js or a schema directory exists, generate local schema files instead. Can be called iteratively to add/overwrite types.

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
schemaDeclarationstring
Sanity schema declaration <syntax> - Requires literal values only: no spread operators, variables, dynamic expressions, imports, or function bodies - If your schema makes references to other custom types in references, add those type declarations as well, or in a separate call to this tool first - Multiple schema types can be declared in the same source string. Simply append the objects one after another - The schema declarations are not evaluated, so keep it declarative </syntax> <example> { name: 'author', type: 'document', fields: [ { name: 'name', type: 'string', }, ], } { name: 'article', type: 'document', fields: [ { name: 'title', type: 'string', validation: (Rule) => Rule.required().max(100), }, { name: 'slug', type: 'slug' }, { name: 'body', type: 'array', of: [{type: 'block'}], }, { name: 'author', type: 'reference', to: [{type: 'author'}], }, ], } </example>
create_documents_from_jsonCreate one or more draft documents by directly providing JSON content. Creates drafts (drafts.* prefix) unless releaseId is specified for version creation.4 params

Create one or more draft documents by directly providing JSON content. Creates drafts (drafts.* prefix) unless releaseId is specified for version creation.

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
documentsarray
Array of documents to create. Each document must have a type and content.
releaseIdstring
Optional release ID for creating versioned documents. If provided, documents will be created under the specified release version instead of as drafts.
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
create_documents_from_markdownCreate one or more draft documents from Markdown content. Creates drafts (drafts.* prefix) unless releaseId is specified for version creation.4 params

Create one or more draft documents from Markdown content. Creates drafts (drafts.* prefix) unless releaseId is specified for version creation.

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
documentsarray
Array of documents to create. Each document must have a type and Markdown content.
releaseIdstring
Optional release ID for creating versioned documents. If provided, documents will be created under the specified release version instead of as drafts.
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
create_versionCreate a version document (versions.{releaseId}.* prefix) for a specific release. Versions are separate from drafts and published documents, and are used for scheduled release workflows.5 params

Create a version document (versions.{releaseId}.* prefix) for a specific release. Versions are separate from drafts and published documents, and are used for scheduled release workflows.

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release to associate this version with
documentIdsarray
Array of document IDs to create versions for (min 1, max 10)
instructionstring
Natural language instruction for internal Sanity AI to modify the document while creating the version. Use this to make content updates, rewrites, or improvements (e.g., "Update all dates to 2025", "Make the tone more formal", "Translate technical terms to plain language"). If omitted, creates an exact copy of the source document.
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
patch_document_from_jsonApply precise modifications to document fields. When targeting a published document, this creates or updates a draft with the changes (published document remains unchanged). When targeting a draft or version, updates it in place.7 params

Apply precise modifications to document fields. When targeting a published document, this creates or updates a draft with the changes (published document remains unchanged). When targeting a draft or version, updates it in place.

Parameters* required
setarray
BATCHED operation that replaces field values at specified paths. Can set fields that don't exist yet - the field will be created based on schema. CRITICAL: 'set' is DESTRUCTIVE - scope matters: - Parent path: Replaces entire object/array item (destroys all children) - Child path: Replaces only that field (preserves siblings) Choose the most specific path for your intent. Common patterns: - To modify multiple fields: Set each field individually as SIBLINGS Example: [{"path": "metadata.title", "value": "..."}, {"path": "metadata.description", "value": "..."}] - To replace entire object: Set parent with ALL fields included Example: [{"path": "metadata", "value": {"title": "...", "description": "...", "author": "..."}}] For references: {_type: "reference", _ref: "id"}. For blocks: include _type.
unsetarray
Removes fields and array items from the document. Use UNSET to delete data - specify only what to remove. Array item removal: - Object arrays (with _key): "categories[_key==\"guide\"]", "tags[_key==\"featured\"]" - Primitive arrays (strings, numbers): "tags[0]", "scores[2]", "categories[1]" - Remove multiple: ["tags[_key==\"abc\"]", "items[_key==\"def\"]"] Field removal: - Simple fields: "metadata.draft", "tempData" - Nested fields: "author.internalNotes" - Remove multiple: ["metadata.title", "metadata.description"] Can only unset fields that EXIST in the current document.
appendarray
Adds items to the END of an array. Can ONLY append to arrays that already EXIST in the document. CANNOT be used on non-array fields. Each append operation targets ONE specific array. For references: [{_type: "reference", _ref: "document-id"}] For blocks: [{_type: "blockType", field1: "...", field2: "..."}]
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
Optional release ID for patching within a specific release. Omit for standard drafts.
documentIdstring
Document ID to patch. For drafts use "drafts." prefix (e.g., "drafts.myDocId"). For published use ID directly.
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
patch_document_from_markdownPatch a specific field in a document using Markdown content6 params

Patch a specific field in a document using Markdown content

Parameters* required
pathstring
Path to the field to update (e.g., "bio", "hero.contents")
markdownstring
Markdown content to apply to the target field. The content will be converted to the appropriate structure based on the target field schema.
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
Optional release ID for patching versioned documents. If provided, the document in the specified release will be patched.
documentIdstring
The ID of the document to patch
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
query_documentsQuery documents from Sanity using GROQ query language6 params

Query documents from Sanity using GROQ query language

Parameters* required
limitinteger
Maximum number of documents to returndefault: 10
querystring
Complete GROQ query (e.g. "*[_type == \"post\"][0...10]{title, _id}")
paramsobject
Optional parameters for the GROQ query
singleboolean
Whether to return a single document or a listdefault: false
resourceobject
Resource information indicating which project id and dataset to target
perspectivevalue
Optional perspective to query from: "raw", "drafts", "published", or a release ID. Models should examine available releases and perspectives in the dataset before selecting one to ensure they are querying from the most appropriate view of the content.default: raw
generate_imageGenerate a new image in a document using AI. When targeting a published document, this creates or updates a draft with the generated image (published document remains unchanged). The draft must be published separately to make changes live. For image arrays, automatically adds...5 params

Generate a new image in a document using AI. When targeting a published document, this creates or updates a draft with the generated image (published document remains unchanged). The draft must be published separately to make changes live. For image arrays, automatically adds...

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
imagePathstring
Path to the image field in the document (e.g., "image", "hero.image", "images"). For arrays of images, provide the array field name and a new image will be added automatically.
documentIdstring
The ID of the document containing the image
instructionstring
Natural language instructions for generating the image. Acts like a prompt telling the internal Sanity AI what to do. Describe the complete image to create (e.g., "A serene mountain landscape at dawn with misty valleys"). Keep instructions clear and specific for best results.
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
transform_imageTransform an existing image in a document using AI. When targeting a published document, this creates or updates a draft with the transformed image (published document remains unchanged). The draft must be published separately to make changes live. Note: Image transformation i...5 params

Transform an existing image in a document using AI. When targeting a published document, this creates or updates a draft with the transformed image (published document remains unchanged). The draft must be published separately to make changes live. Note: Image transformation i...

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
imagePathstring
Path to the image field in the document (e.g., "image", "hero.image"). For image arrays, target with _key filtering: "images[_key==\"img1\"]".
documentIdstring
The ID of the document containing the image
instructionstring
Natural language instructions for transforming the image. Acts like a prompt telling the internal Sanity AI what to do. Describe the desired changes (e.g., "Make the background more vibrant and add warm sunset lighting"). Keep instructions clear and specific for best results.
workspaceNamestring
Workspace name derived from the manifest, not document type. Derived from context or listSchemaWorkspacesTooldefault: default
get_documentFetch a single document by its exact ID. This is a direct ID lookup only - it does not search, filter, or query. Use when you have a specific document ID and need its full content.2 params

Fetch a single document by its exact ID. This is a direct ID lookup only - it does not search, filter, or query. Use when you have a specific document ID and need its full content.

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
documentIdstring
The exact document ID to fetch. Must be a complete, known document ID (e.g., "movie-123" or "drafts.article-456"). This is a direct ID lookup only - it does not search, filter, or query.
publish_documentsPublish one or more draft documents to make them live2 params

Publish one or more draft documents to make them live

Parameters* required
idsarray
IDs of the documents to publish
resourceobject
Resource information indicating which project id and dataset to target
unpublish_documentsUnpublish one or more published documents (moves them back to drafts)2 params

Unpublish one or more published documents (moves them back to drafts)

Parameters* required
idsarray
IDs of the documents to unpublish (published document IDs only)
resourceobject
Resource information indicating which project id and dataset to target
version_replace_documentReplace the contents of a document version with contents from another document5 params

Replace the contents of a document version with contents from another document

Parameters* required
idstring
ID of the published document
typestring
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release that contains this document version
sourceDocumentIdstring
ID of the document to copy contents from
discard_draftsDiscard one or more draft documents (deletes drafts while keeping published documents intact). Can also discard release versions if releaseId is provided.3 params

Discard one or more draft documents (deletes drafts while keeping published documents intact). Can also discard release versions if releaseId is provided.

Parameters* required
idsarray
IDs of the documents to discard (published IDs without drafts. prefix)
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
Optional release ID. If provided, discards the versions from this release instead of the draft versions.
version_unpublish_documentMark a document to be unpublished when the release is run3 params

Mark a document to be unpublished when the release is run

Parameters* required
idstring
ID of the published document
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release that contains this document version
list_organizationsLists all organizations the user has access to in Sanity

Lists all organizations the user has access to in Sanity

No parameter schema in public metadata yet.

list_projectsLists all Sanity projects associated with your account

Lists all Sanity projects associated with your account

No parameter schema in public metadata yet.

get_project_studiosRetrieves all studio applications linked to a specific Sanity project1 params

Retrieves all studio applications linked to a specific Sanity project

Parameters* required
resourceobject
create_projectCreates a new Sanity project and initializes it with a dataset and API tokens4 params

Creates a new Sanity project and initializes it with a dataset and API tokens

Parameters* required
corsOriginstring
CORS origin to allow, in format protocol://hostname[:port]. Use * for wildcard. Common values: - http://localhost:3000: For embedding Studio in Next.js, React, or similar frameworks during local development - https://*.lovable.app: For Lovable (preview iframes and published apps) - https://*.vusercontent.net: For v0 preview iframes - https://*.vercel.app: For v0 published apps Choose based on where your Studio or frontend will run. Additional CORS origins can be managed via the Sanity CLI using `sanity cors add`.
displayNamestring
The display name for the new project
organizationIdstring
Organization ID to create the project in
allowCredentialsboolean
Allow authenticated requests from this origin. Required for hosting a Studio. Defaults to truedefault: true
add_cors_originAdds CORS origin(s) to allow client-side requests to a Sanity project3 params

Adds CORS origin(s) to allow client-side requests to a Sanity project

Parameters* required
originstring
CORS origin to allow, in format protocol://hostname[:port]. Wildcards (*) are supported for subdomains (e.g., https://*.example.com). Common values: - http://localhost:3000: Local development with Next.js, React, etc. - http://localhost:3333: Standalone Sanity Studio - https://*.lovable.app: Lovable preview and published apps - https://*.vusercontent.net: v0 preview iframes - https://*.vercel.app: v0 published apps - https://your-domain.com: Your production domain
projectIdstring
The ID of the Sanity project to add the CORS origin to
allowCredentialsboolean
Allow authenticated requests from this origin. Required for hosting a Studio or making authenticated API requests. Defaults to true.default: true
list_datasetsLists all datasets in your Sanity project1 params

Lists all datasets in your Sanity project

Parameters* required
resourceobject
create_datasetCreates a new dataset with specified name and access settings3 params

Creates a new dataset with specified name and access settings

Parameters* required
aclModestring
The ACL mode for the datasetone of private · public
resourceobject
datasetNamestring
The name of the dataset (will be automatically formatted to match requirements)
update_datasetModifies a dataset's name or access control settings2 params

Modifies a dataset's name or access control settings

Parameters* required
aclModestring
The ACL mode for the datasetone of private · public
resourceobject
Resource information indicating which project id and dataset to target
list_releasesList content releases in Sanity, optionally filtered by state (active, scheduled, etc)2 params

List content releases in Sanity, optionally filtered by state (active, scheduled, etc)

Parameters* required
statestring
Filter releases by state. Use "all" to get all non-archived releases (active, scheduled, published). Use "archived" or "deleted" to specifically list those.one of active · scheduled · published · archived · deleted · alldefault: active
resourceobject
Resource information indicating which project id and dataset to target
create_releaseCreate a new content release in Sanity with an automatically generated ID5 params

Create a new content release in Sanity with an automatically generated ID

Parameters* required
titlestring
Title for the release (e.g., "Spring 2025 Product Launch")
resourceobject
Resource information indicating which project id and dataset to target
descriptionstring
Description for the release
releaseTypestring
Type of release (asap, undecided, scheduled)one of asap · undecided · scheduleddefault: undecided
intendedPublishAtstring
Date can be ISO format (2025-04-04T18:36:00.000Z) or natural language like "in two weeks"
edit_releaseUpdate metadata for an existing content release6 params

Update metadata for an existing content release

Parameters* required
titlestring
Title for the release (e.g., "Spring 2025 Product Launch")
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release
descriptionstring
Description for the release
releaseTypestring
Type of release (asap, undecided, scheduled)one of asap · undecided · scheduled
intendedPublishAtstring
When the release is intended to be published (informational only)
schedule_releaseSchedule a content release to be published at a specific time3 params

Schedule a content release to be published at a specific time

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
publishAtstring
Date can be ISO format (2025-04-04T18:36:00.000Z) or natural language like "in two weeks"
releaseIdstring
ID of the release
publish_releasePublish a release immediately2 params

Publish a release immediately

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release
archive_releaseArchive a release that is no longer active2 params

Archive a release that is no longer active

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release
unarchive_releaseRestore an archived release2 params

Restore an archived release

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release
unschedule_releaseRemove a previously set schedule from a release2 params

Remove a previously set schedule from a release

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release
delete_releaseDelete a release2 params

Delete a release

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
releaseIdstring
ID of the release
list_embeddings_indicesList all available embeddings indices for a dataset1 params

List all available embeddings indices for a dataset

Parameters* required
resourceobject
Resource information indicating which project id and dataset to target
semantic_searchPerform a semantic search on an embeddings index4 params

Perform a semantic search on an embeddings index

Parameters* required
limitinteger
Maximum number of results to returndefault: 10
querystring
The search query to find semantically similar content
resourceobject
Resource information indicating which project id and dataset to target
indexNamestring
The name of the embeddings index to search
migration_guideGet comprehensive guidance for migrating existing projects to Sanity. Supports general migration guides, analyzing existing content structures + designing Sanity schemas, and migrating content from various CMS platforms (like Contentful, WordPress, Strapi). Use this tool when...1 params

Get comprehensive guidance for migrating existing projects to Sanity. Supports general migration guides, analyzing existing content structures + designing Sanity schemas, and migrating content from various CMS platforms (like Contentful, WordPress, Strapi). Use this tool when...

Parameters* required
guidestring
The type of migration guide to retrieve. - Use "general" for a high-level Sanity migration guide - Use "schema.{platform}" for a platform-specific guide for migrating schemas to Sanity - Use "content.{platform}" for a platform-specific guide for migrating content to Sanityone of general · schema.generic · schema.contentful · schema.wordpress · schema.strapi · schema.drupal
search_docsSearch Sanity docs2 params

Search Sanity docs

Parameters* required
limitinteger
Maximum number of results to return (default: 10, max: 50)default: 10
querystring
The search query for documentation
read_docsRead a specific Sanity documentation article1 params

Read a specific Sanity documentation article

Parameters* required
pathstring
The documentation path (e.g., "/docs/studio/installation") or full URL (e.g., "https://www.sanity.io/docs/studio/installation")
list_sanity_rulesIMPORTANT: Call this FIRST before any Sanity development work. Returns available best practice rules for schemas, queries, frameworks, and visual editing. You MUST load relevant rules before writing Sanity code.

IMPORTANT: Call this FIRST before any Sanity development work. Returns available best practice rules for schemas, queries, frameworks, and visual editing. You MUST load relevant rules before writing Sanity code.

No parameter schema in public metadata yet.

get_sanity_rulesLoad Sanity development rules. ALWAYS call list_sanity_rules first to see available rules, then load all rules relevant to your task in a single call.1 params

Load Sanity development rules. ALWAYS call list_sanity_rules first to see available rules, then load all rules relevant to your task in a single call.

Parameters* required
rulesarray
One or more rule names to load. Use list_sanity_rules to see available rules.

Sanity Agent Toolkit

Collection of resources to help AI agents build better with Sanity. Supports Cursor, Claude Code, Codex, VS Code, Lovable, v0, Replit, OpenCode, and any other editor/agent compatible with MCP or Agent Skills.


Features

  • MCP server: Direct access to your Sanity projects (content, datasets, releases, schemas) and agent rules.
  • Agent skills: Comprehensive best practices skills for Sanity development, content modeling, SEO/AEO, and experimentation. Includes 21 integration/topic guides and 26 focused best-practice rules.
  • Claude Code plugin: MCP server, agent skills, and slash commands for Claude Code users. Available on the official Anthropic plugin marketplace.
  • Cursor plugin: MCP server, agent skills, and commands on the Cursor Marketplace.
  • Codex plugin: MCP server and agent skills for OpenAI Codex users.

Get started

Choose your path based on how you want agents to work with Sanity:

  1. MCP server — Give your agent always up-to-date rules and full access to your Sanity projects. No local files to maintain. Works with Cursor, VS Code, Claude Code, Lovable, v0, Replit, OpenCode, and other MCP-compatible clients.
  2. Agent skills — Install best practices skills for Sanity, content modeling, SEO/AEO, and experimentation. Works with Cursor, Claude Code, and any Agent Skills-compatible agent.
  3. Plugin — Install the Sanity plugin for Cursor or Claude Code. Bundles MCP server, agent skills, and commands.
  4. Manual installation — Copy the skill references locally for offline use. You'll need to update them yourself.

Option 1: Install MCP server (recommended)

Give agents direct access to Sanity projects and always up-to-date agent rules via the MCP server.

Quick install via Sanity CLI

Run in terminal to detect and configure MCP for Cursor, Claude Code and VS Code automatically:

npx sanity@latest mcp configure

Uses your logged-in CLI user for authentication — no manual tokens or OAuth needed.

Client-specific instructions

Cursor

One-click install:
Install MCP Server

Or manually: Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P) → View: Open MCP Settings → + New MCP Server → add to mcp.json:

{
  "mcpServers": {
    "Sanity": {
      "type": "http",
      "url": "https://mcp.sanity.io"
    }
  }
}
Claude Code

Run in terminal. Authenticate with OAuth on next launch:

claude mcp add Sanity -t http https://mcp.sanity.io --scope user
Codex

Run in terminal. Authenticate with OAuth on next launch:

codex mcp add Sanity --url https://mcp.sanity.io

Or manually add to ~/.codex/config.toml:

[mcp_servers.Sanity]
url = "https://mcp.sanity.io"
VS Code

Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P) → MCP: Open User Configuration → add:

{
  "servers": {
    "Sanity": {
      "type": "http",
      "url": "https://mcp.sanity.io"
    }
  }
}
Lovable

Sanity is available as a prebuilt chat connector in Lovable:

  1. Open Connectors → Chat connectors
  2. Select Sanity
  3. Click Connect and sign in to authorize your Sanity account

In your next prompt, reference your Sanity project or ask the agent to read your schema.

See the Lovable MCP documentation or Sanity + Lovable guide for more details.

v0

In the prompt input field, click Prompt Tools → MCPs → Add New → Select Sanity → Authorize → Authenticate with OAuth.

Replit

Go to Integrations Page → scroll to MCP Servers for Replit Agent → Add MCP server → Enter Sanity as name and https://mcp.sanity.io as Server URL → Test & Save → Authenticate with OAuth.

OpenCode

Add to your opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sanity": {
      "type": "remote",
      "url": "https://mcp.sanity.io",
      "oauth": {}
    }
  }
}

Then run: opencode mcp auth sanity

Other clients

For any MCP-compatible client, add https://mcp.sanity.io as the server URL.

If your client doesn't support remote MCP servers, use a proxy like mcp-remote:

{
  "mcpServers": {
    "Sanity": {
      "command": "npx",
      "args": ["mcp-remote", "https://mcp.sanity.io", "--transport", "http-only"]
    }
  }
}

Authorization and troubleshooting

Manual MCP configuration uses OAuth by default. You can use token auth instead by setting an Authorization: Bearer <token> header in the MCP config. If authentication fails after CLI setup, rerun npx sanity@latest mcp configure and restart your MCP client. For OAuth reset issues, Cursor provides Cursor: Clear All MCP Tokens and VS Code provides Authentication: Remove Dynamic Authentication Providers.

See the Sanity MCP docs for authorization options and troubleshooting.

Option 2: Install Agent Skills

Install best practices skills that work with any Agent Skills-compatible agent.

npx skills add sanity-io/agent-toolkit

See Option 3 for plugin installation.

Option 3: Install plugin

Install the Sanity plugin to get MCP server, agent skills, and commands. Available on the Claude Code marketplace and Cursor Marketplace.

Claude Code

The Sanity plugin is listed on the official Anthropic plugin marketplace. The official marketplace (claude-plugins-official) is pre-registered when you start Claude Code — you do not need to add a custom marketplace.

Install from Claude Code:

/plugin install sanity@claude-plugins-official

If the plugin is not found, refresh the marketplace catalog and retry:

/plugin marketplace update claude-plugins-official

Then run /reload-plugins to activate without restarting.

Alternative: interactive install

  1. Run /plugin and open the Discover tab
  2. Search for Sanity
  3. Review what the plugin will install — commands, skills, hooks, and MCP servers — before confirming (Anthropic recommends reviewing plugin permissions and source before installing)
  4. Choose an installation scope:
    • User (default): all projects on this machine
    • Project: shared with collaborators via .claude/settings.json
    • Local: this repository only
  5. Run /reload-plugins to activate without restarting

Verify installation: Ask Claude Code: "which skills do you have access to?"

You should see the Sanity skills listed.

Start using: Use natural language and skills activate automatically:

Help me create a blog post schema in Sanity

Review my GROQ query and Next.js Visual Editing setup

Or run /sanity to explore all capabilities.

Cursor

Install from the Cursor Marketplace by running this in Cursor chat:

/add-plugin sanity

Verify installation: Ask Cursor: "which skills do you have access to?"

You should see the Sanity skills listed.

Start using: Use natural language and skills activate automatically:

Help me create a blog post schema in Sanity

Review my GROQ query and Next.js Visual Editing setup

Codex

  1. Add the Sanity marketplace:
codex plugin marketplace add sanity-io/agent-toolkit
  1. Install the plugin from Codex's plugin directory (select the Sanity Agent Toolkit marketplace, then install Sanity).

  2. Restart Codex. Verify by asking: "which skills do you have access to?" — you should see the Sanity skills listed.

Option 4: Manual installation

Install the skill references locally to teach your editor Sanity best practices:

  1. Copy skills/sanity-best-practices/ to your project.
  2. (Recommended) Copy AGENTS.md to your project root to act as a knowledge router.

Capabilities

MCP tools

With MCP connected, your AI can use tools like:

  • query_documents — run GROQ queries directly
  • create_documents — create draft documents from structured content, or version documents when a release ID is provided
  • patch_documents — surgical edits to existing documents; published documents are edited by creating or updating drafts
  • publish_documents / unpublish_documents — manage document lifecycle
  • deploy_schema / get_schema — deploy MCP-managed schemas and inspect deployed schemas
  • deploy_studio — deploy a hosted Studio bound to an MCP-managed schema
  • create_release / list_releases — create and inspect Content Releases
  • create_version — create version documents for releases
  • generate_image / transform_image — AI image generation and editing
  • whoami — verify the authenticated Sanity user
  • get_project_studios — list Studio applications linked to a project
  • search_docs / read_docs — search and read Sanity documentation
  • list_sanity_rules / get_sanity_rules — load agent rules on demand
  • give_feedback — report MCP tool errors, missing capabilities, confusing output, or documentation issues

MCP-managed schemas are resolved before Studio-deployed and legacy schemas. If you deploy schema changes with deploy_schema, redeploy any matching MCP-managed Studio with deploy_studio so it picks up the latest schema. generate_image, transform_image, and create_version with an instruction consume Sanity AI credits.

See the full list of available tools.

Agent skills

Best practices skills that agents like Claude Code, Cursor, GitHub Copilot, etc. can discover and use automatically. Skills follow the Agent Skills format. See Option 2 for installation.

SkillDescription
sanity-best-practicesGROQ performance, schema design, Visual Editing, images, Portable Text, Studio, TypeGen, localization, migrations, and framework integration guides
content-modeling-best-practicesStructured content principles: separation of concerns, references vs embedding, content reuse
seo-aeo-best-practicesSEO/AEO with EEAT principles, structured data (JSON-LD), technical SEO patterns
content-experimentation-best-practicesA/B testing methodology, statistical foundations, experiment design

Getting started flow

The onboarding guide follows three phases:

  1. Studio & Schema — Set up Sanity Studio and define your content model
  2. Content — Import existing content or generate placeholder content via MCP
  3. Frontend — Integrate with your application (framework-specific)

Just say: "Get started with Sanity" to begin.

Slash commands (Claude Code)

CommandWhat it does
/sanityList available skills and help topics
/sanity-reviewReview code for Sanity best practices
/typegenRun TypeGen and troubleshoot issues
/deploy-schemaDeploy schema with verification

Repository structure

Note: The reference files in skills/sanity-best-practices/references/ are the canonical content for the Sanity MCP server's list_sanity_rules / get_sanity_rules tools. Each file must have valid name and description frontmatter — rule names are derived from filenames (e.g., nextjs.md → nextjs).

sanity-io/agent-toolkit/
├── AGENTS.md                      # Knowledge router & agent behavior
├── README.md                      # This file
├── .agents/plugins/               # Codex marketplace
│   └── marketplace.json           # Codex marketplace metadata
├── .claude-plugin/                # Claude Code plugin configuration (distributed via claude-plugins-official)
│   ├── plugin.json                # Plugin manifest (name: sanity)
│   └── marketplace.json           # Marketplace manifest for repo-based discovery
├── .codex-plugin/                 # Codex plugin configuration
│   └── plugin.json                # Codex plugin manifest
├── .cursor-plugin/                # Cursor plugin configuration (distributed via cursor.com/marketplace)
│   ├── marketplace.json           # Cursor marketplace metadata
│   └── plugin.json                # Per-plugin manifest
├── .mcp.json                      # MCP server configuration
├── assets/                        # Plugin branding
│   └── logo.svg                   # Sanity logo for marketplace display
├── commands/                      # Agent commands
│   ├── sanity.md                  # /sanity help
│   ├── sanity-review.md           # /sanity-review
│   ├── typegen.md                 # /typegen
│   └── deploy-schema.md           # /deploy-schema
├── scripts/                       # Validation and CI scripts
│   └── validate-cursor-plugin.mjs # Cursor plugin validator
└── skills/                        # Agent skills (agentskills.io format)
    ├── sanity-best-practices/     # Comprehensive Sanity skill
    │   ├── SKILL.md               # Skill definition and quick reference
    │   └── references/            # Canonical content (22 guides)
    │       ├── get-started.md     # Onboarding guide
    │       ├── nextjs.md          # Next.js integration
    │       ├── groq.md            # GROQ patterns & performance
    │       ├── schema.md          # Schema design & validation
    │       └── ...                # See SKILL.md for full index
    ├── content-modeling-best-practices/      # Modeling guidance + topic references
    ├── seo-aeo-best-practices/               # SEO/AEO guidance + topic references
    └── content-experimentation-best-practices/ # Experiment design + stats references

All skills use references/ for detailed content loaded on demand. The sanity-best-practices references are also the canonical source for the MCP server's Sanity rules.


Resources

  • Create Sanity account
  • Sanity documentation
  • GROQ language reference
  • Visual Editing guide
  • Sanity TypeGen
  • MCP server docs
  • Blueprints Infrastructure as Code

Contributing

Found a better pattern? Missing a framework or best practice? Read the contributing guide for how skills work and what makes a good contribution, then:

  1. Fork the repo.
  2. Install dependencies with npm install.
  3. Make your changes in skills/<skill-name>/.
  4. Run npm run validate:all to check skill and plugin validity.
  5. Submit a PR.

Support

  • Sanity Community (Discord)
  • GitHub issues

License: MIT

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →
Categories
AI & LLM Tools
Registryactive
TransportHTTP
UpdatedJun 10, 2026
View on GitHub

Related AI & LLM Tools MCP Servers

View all →
SkillFM LLM Cost Optimizer

io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage

LLM cost optimizer for OpenAI, Anthropic, token usage, BYOK, and SkillFM Beacon audits.
Llm Orchestration Agent

io.github.mikerawsonnz/llm-orchestration-agent

Run a prompt through a LangChain (system + human) chain over Gemini on Vertex AI; optional LangSmith
Authenticated Llm Agent

io.github.mikerawsonnz/authenticated-llm-agent

JWT-gated LLM gateway: authenticate (bcrypt/JWT), then run a LangChain-on-Vertex Gemini completion.
Copilot Memory MCP

labforgedev/copilot-memory-mcp

Persistent semantic memory for AI agents using local ChromaDB vector search. No cloud required.
1
Agent Prompt Injection Firewall Mcp

csoai-org/agent-prompt-injection-firewall-mcp

The WAF for agents. Pattern-based + heuristic firewall scans prompts, RAG documents, tool argume...
Authenticated Multi Llm Agent

io.github.mikerawsonnz/authenticated-multi-llm-agent

Google-OAuth-gated LLM gateway: verify a Google ID token, then run a Gemini (Vertex AI) completion f