Contentstack MCP Server
Experimental: This MCP server is still experimental. Features and tool schemas may change without notice. Use it in production at your own risk.
A complete guide for setting up, configuring, and using the Contentstack MCP Server with AI agents and tools.
What is the Contentstack MCP Server?
The Model Context Protocol
The Model Context Protocol (MCP) is an open standard that lets AI agents (Claude, Cursor, and others) connect to external systems through a common interface. Instead of writing bespoke integration code every time you want an AI to talk to an API, you run an MCP server that exposes those APIs as structured, typed tools. The agent calls those tools and interprets the results in natural language.
What this server does
The Contentstack MCP Server bridges your Contentstack stack and related services, the Content Management API, Content Delivery API, Analytics, Launch, BrandKit, Personalize, Developer Hub, and Lytics to any MCP-compatible AI agent.
Once configured, your AI agent can:
- Read, create, update, publish, and unpublish entries and assets in plain language
- Inspect audit logs, version history, and workflow stages
- Trigger deployments, check logs, and revalidate CDN caches in Launch
- Generate on-brand content via BrandKit AI using voice profiles and a knowledge vault
- Query audience segments, user profiles, and A/B test results in Personalize and Lytics
- Manage Marketplace apps and OAuth settings in Developer Hub
- Pull API usage, cache hit rates, and SDK adoption metrics from Analytics
Who it's for
- Developers building AI-powered content workflows or automations
- Content architects who want an agent to help audit, model, or migrate content
- DevRel and solutions engineers demonstrating Contentstack capabilities with AI
- AI workflow builders connecting Contentstack to agent frameworks and pipelines
Prerequisites
Before you start, make sure you have:
- An active Contentstack account
- Node.js 18 or later installed locally (required to run npx)
- A supported MCP client:
- Claude Desktop (macOS / Windows)
- Cursor
- Claude Code (CLI)
- Any other MCP client that supports stdio transport
Authentication
Most API groups require OAuth authentication. Run this command once before using the server:
npx @contentstack/mcp --auth
This opens a browser window. You will:
- Log in to your Contentstack account
- Select your region (US, EU, AU, etc.)
- Select your organisation
- Grant the MCP server access
The resulting OAuth tokens are saved locally on your machine. They are reused automatically by the server on subsequent runs — you do not need to re-authenticate unless your tokens expire.
Which groups require OAuth?
| Group | Authentication method |
|---|---|
| CMA, CMA Extended | OAuth |
| Analytics | OAuth |
| BrandKit | OAuth |
| Launch | OAuth |
| DeveloperHub | OAuth |
| Personalize | OAuth |
| CDA | Token-based (delivery token) |
| Lytics | Token-based (Lytics access token) |
CDA and Lytics do not use OAuth. They authenticate with static tokens you provide in environment variables.
Installation
No installation or repository cloning is needed. The server runs on demand via npx:
npx @contentstack/mcp
The -y flag (used in MCP client configs) automatically confirms the npx prompt, so the agent can start the server without human input:
npx -y @contentstack/mcp
npx pulls the latest published version of @contentstack/mcp from npm each time it runs. This means you always get the latest tool definitions without a manual upgrade step.
Configuration
The server is configured through environment variables or equivalent CLI arguments. Both work identically, use whichever your MCP client supports.
Environment variables
| Variable | CLI argument | Description | Required for |
|---|---|---|---|
| CONTENTSTACK_API_KEY | --stack-api-key | Your Contentstack Stack API Key | CMA, CMA Extended, CDA, DeveloperHub |
| CONTENTSTACK_DELIVERY_TOKEN | --delivery-token | Delivery token for the target environment | CDA only |
| CONTENTSTACK_BRAND_KIT_ID | --brand-kit-id | Your Brand Kit ID | BrandKit only |
| CONTENTSTACK_LAUNCH_PROJECT_ID | --launch-project-id | Your Launch Project UID | Launch only |
| CONTENTSTACK_PERSONALIZE_PROJECT_ID | --personalize-project-id | Your Personalize Project ID | Personalize only |
| LYTICS_ACCESS_TOKEN | --lytics-access-token | Your Lytics access token | Lytics only |
| GROUPS | --groups | Comma-separated list of API groups to enable | Optional - defaults to cma |
You only need to provide the variables relevant to the groups you are enabling. For example, if you load only cma, you need only CONTENTSTACK_API_KEY. If you add cda, you also need CONTENTSTACK_DELIVERY_TOKEN.
Where to find your credentials
- Stack API Key: Contentstack Dashboard → Settings → API Credentials
- Delivery Token: Contentstack Dashboard → Settings → Tokens → Delivery Tokens → create one for your target environment
- Brand Kit ID: BrandKit Dashboard → your brand kit's settings page
- Launch Project ID: Launch Dashboard → your project's URL or settings
- Personalize Project ID: Personalize Dashboard → your project's settings
- Lytics Access Token: Lytics account settings → API Tokens
The GROUPS variable
The GROUPS variable controls which API toolsets are exposed to the agent. Loading only what you need is good practice — it reduces the volume of tool definitions sent to the model on every turn, keeping context windows lean and responses focused.
| Group value | Tools | Purpose |
|---|---|---|
| cma | 77 | Core content management: entries, assets, content types, branches, releases, publishing, variants, environments, global fields, taxonomies |
| cma-extended | 22 | Audit logs, version history, global field writes, asset folder management, workflow and publish rule inspection — load alongside cma |
| cda | 4 | Published content via CDN: fast, read-only delivery of entries and assets |
| analytics | 8 | API/CDN usage, cache performance, status codes, SDK adoption, device/URL analytics |
| brandkit | 12 | AI content generation, voice profiles, knowledge vault |
| launch | 27 | Projects, environments, deployments, deploy hooks, logs, file upload, CDN cache revalidation |
| developerhub | 12 | Marketplace app lifecycle, OAuth settings, app installations |
| lytics | 10 | Audiences, user profiles, content topics, classification, fields, tables |
| personalize | 24 | Attributes, audiences, experiences, events, analytics, geolocation helpers |
| all | all of the above | Enable everything - best for exploration and prototyping |
Examples:
GROUPS=cma
GROUPS=cma,cma-extended
GROUPS=cma,cda
GROUPS=allContext tip: For everyday content operations, cma alone is sufficient. Add cma-extended only when the session requires audit trails, version inspection, or workflow context. Loading all is convenient for exploration but sends the full tool list to the model on every turn.
MCP Client Setup
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or %APPDATA%\Claude\claude_desktop_config.json on Windows.
Option A — Environment variables (recommended):
{
"mcpServers": {
"contentstack": {
"command": "npx",
"args": ["-y", "@contentstack/mcp"],
"env": {
"CONTENTSTACK_API_KEY": "<YOUR_STACK_API_KEY>",
"CONTENTSTACK_DELIVERY_TOKEN": "<YOUR_DELIVERY_TOKEN>",
"CONTENTSTACK_BRAND_KIT_ID": "<YOUR_BRAND_KIT_ID>",
"CONTENTSTACK_LAUNCH_PROJECT_ID": "<YOUR_LAUNCH_PROJECT_ID>",
"CONTENTSTACK_PERSONALIZE_PROJECT_ID": "<YOUR_PERSONALIZE_PROJECT_ID>",
"LYTICS_ACCESS_TOKEN": "<YOUR_LYTICS_TOKEN>",
"GROUPS": "cma"
}
}
}
}Only include the env vars relevant to the groups you are enabling. Remove keys you do not need.
Option B — CLI arguments (use if your client does not support env vars):
{
"mcpServers": {
"contentstack": {
"command": "npx",
"args": [
"-y",
"@contentstack/mcp",
"--stack-api-key",
"<YOUR_STACK_API_KEY>",
"--delivery-token",
"<YOUR_DELIVERY_TOKEN>",
"--brand-kit-id",
"<YOUR_BRAND_KIT_ID>",
"--launch-project-id",
"<YOUR_LAUNCH_PROJECT_ID>",
"--lytics-access-token",
"<YOUR_LYTICS_TOKEN>",
"--personalize-project-id",
"<YOUR_PERSONALIZE_PROJECT_ID>",
"--groups",
"cma"
]
}
}
}After editing the file, restart Claude Desktop to pick up the changes.
Cursor
Edit ~/.cursor/mcp.json (create it if it does not exist):
{
"mcpServers": {
"contentstack": {
"command": "npx",
"args": ["-y", "@contentstack/mcp"],
"env": {
"CONTENTSTACK_API_KEY": "<YOUR_STACK_API_KEY>",
"GROUPS": "cma"
}
}
}
}Restart Cursor after saving.
Claude Code (CLI)
Use the claude mcp add command to register the server:
claude mcp add contentstack \
--command "npx" \
--args "-y,@contentstack/mcp" \
--env "CONTENTSTACK_API_KEY=<YOUR_API_KEY>,GROUPS=cma"Other MCP clients
The Contentstack MCP Server uses stdio transport, which is the standard for locally-run MCP servers. Any MCP client that supports stdio should work with the same configuration pattern: point the client at npx -y @contentstack/mcp and pass your credentials via environment variables or CLI arguments.
API Groups - what to load and when
CMA - Content Management API
OAuthThe core group for content operations. Covers the full lifecycle of entries and assets: create, read, update, delete, publish, unpublish, and localize. Also includes branches, branch aliases, merge jobs, releases, publishing queues, content types, global fields, taxonomies, terms, variants, and environments.
Use this group for:
- Day-to-day content management tasks
- Content modelling and schema inspection
- Bulk publishing or unpublishing workflows
- Branch management and merge operations
See the Tool Catalog for the full list.
CMA Extended - Content Management API Extended
OAuthExtends CMA with administrative and investigative capabilities. Load alongside cma when the session requires:
- Audit logs: every create, update, delete, publish, and unpublish action is recorded.
- Version history: inspect or label every version of an entry or asset.
- Global field writes: create, update, and delete global fields.
- Asset folder management: create, rename, and delete asset folders.
- Workflow inspection: retrieve workflow definitions and publish rules.
See the Tool Catalog for the full list.
CDA - Content Delivery API
Token-basedDelivers published content through Contentstack's global CDN. Read-only. Returns only content that has been published to the target environment — draft or unpublished entries are not visible.
Does not require OAuth. Authenticate by providing a delivery token scoped to your target environment.
See the Tool Catalog for the full list.
Analytics
OAuthUsage analytics for your Contentstack organisation: API call volumes, CDN bandwidth, cache hit/miss ratios, HTTP status code distribution, SDK version adoption, and URL-level traffic patterns.
All analytics tools are asynchronous — they return a jobId which you then pass to get_job_data to retrieve the results once the job completes.
See the Tool Catalog for the full list.
BrandKit
OAuthAI-powered content generation grounded in your brand. BrandKit provides:
- Voice Profiles: define the tone, style, formality, and complexity of generated content.
- Knowledge Vault: a store of brand guidelines, reference materials, and tone-of-voice examples.
- Generative AI: combines your voice profile and knowledge vault context to produce on-brand content.
See the Tool Catalog for the full list.
Launch
OAuthFull control over Launch, Contentstack's hosting and deployment platform. Manage projects and environments, create and trigger deploy hooks, monitor deployment status and build logs, fetch server runtime logs, upload ZIP files for file-based deployments, and revalidate CDN caches after content updates.
Supports both Git-connected projects (GitHub, Bitbucket) and file-upload projects.
See the Tool Catalog for the full list.
Developer Hub
OAuthManage Contentstack Marketplace apps. Create, update, and delete apps, configure OAuth settings, install apps into stacks or organisations, and inspect existing installations.
See the Tool Catalog for the full list.
Lytics
Token-basedAccess your Lytics customer data platform. Retrieve audience segments, look up individual user profiles, explore content topics and classifications, inspect schema fields and data tables, and classify or enrich content via Lytics' AI engine.
Does not require OAuth. Authenticate with a Lytics access token.
See the Tool Catalog for the full list.
Personalize
OAuthConfigure and inspect Contentstack Personalize: manage custom attributes and audience segments, create and manage personalization experiences (both Segmented and A/B Test types), define events for conversion tracking, retrieve analytics summaries and time-series data for experience versions, and look up geolocation data for geographic targeting rules.
See the Tool Catalog for the full list.
Group Requirements Summary
| Group | Authentication | Additional credentials |
|---|---|---|
| CMA | OAuth | Stack API Key |
| CMA Extended | OAuth | Stack API Key |
| CDA | Token-based | Stack API Key + Delivery Token |
| Analytics | OAuth | — |
| BrandKit | OAuth | Brand Kit ID |
| Launch | OAuth | Launch Project ID + Organisation UID |
| DeveloperHub | OAuth | Stack API Key |
| Lytics | Token-based | Lytics Access Token |
| Personalize | OAuth | Personalize Project ID |
Common Workflows
Once configured, you interact with Contentstack entirely through natural language. Here are examples of what agents can do with different groups enabled.
Content management (CMA):
- "Get all entries for the article content type that were published in the last 30 days"
- "Create a new entry in blog_post with the title 'Getting started with MCP' and publish it to the production environment"
- "Show me all entries that reference the asset with UID blt1234abcd"
- "Create a branch called feature/new-homepage from main and add the hero entry to a release"
- "What environments does this stack have, and which locales are configured?"
Auditing and investigation (CMA, CMA-extended):
- "Show me the audit log for the last 24 hours - who changed what?"
- "What versions exist for entry blt9abc in the product content type? Label version 4 as 'Pre-launch approved'"
- "Which workflow stages require approval before an entry can be published?"
Content delivery (CDA):
- "Fetch the latest published entries from the homepage_banner content type on the production environment"
- "What does the live version of entry blt5678efgh look like right now?"
Deployments (Launch):
- "What's the current deployment status of the staging environment?"
- "Fetch the build logs from the last deployment — did it fail anywhere?"
- "Trigger the deploy hook for the production environment"
- "Revalidate the CDN cache after I update the hero entry"
Brand content (Brandkit):
- "Generate a product description for a new running shoe using the 'Active lifestyle' voice profile"
- "Add the updated brand guidelines document to the Knowledge Vault"
- "What voice profiles are available in my Brand Kit?"
Personalization (Personalize):
- "Show me all active A/B test experiences and their current conversion rates"
- "Create a new audience segment for users in Germany who have viewed more than 3 product pages"
- "What's the analytics summary for experience version ver_abc123 over the last 7 days?"
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| "Unauthorized" errors on CMA / Analytics / Launch calls | OAuth not run, or tokens expired | Run npx @contentstack/mcp --auth and complete the flow |
| CDA returns empty or 401 errors | Missing or incorrect delivery token | Check CONTENTSTACK_DELIVERY_TOKEN — it must be scoped to the correct environment |
| Contentstack tools not appearing in your MCP client | GROUPS value is wrong or malformed | Check for typos and spaces — use comma-separated values with no spaces, e.g. cma,cda |
| Launch tools fail with auth errors | Organisation UID not set | Add CONTENTSTACK_ORGANIZATION_UID to your environment — find it in the Launch dashboard URL |
| Lytics tools return 403 | Expired or incorrect access token | Regenerate your Lytics access token and update LYTICS_ACCESS_TOKEN |
| Analytics get_job_data returns "200 Job active" | Job still processing | Wait a few seconds and retry — analytics jobs are asynchronous |
| npx prompts for confirmation in the client | -y flag missing | Ensure your args array includes "-y" as the first argument after "npx" |
Tool Catalog
Full reference for every tool exposed by each group.
Content Management API (CMA)
| Tool | Description |
|---|---|
| publish_an_entry | Publishes a specified entry of a content type to one or more environments and locales within a branch of the stack. Optionally schedule the publish for a future time. |
| unpublish_an_entry | Unpublishes a specified entry from selected environments and locales within a branch, removing it from the CDN. Optionally schedule the unpublish for a future time. |
| publish_variants_of_an_entry | Publishes one or more variants of an entry to selected environments and locales within a branch. |
| create_an_entry | Creates a new entry in the specified Contentstack stack, targeting a defined content type and branch, with support for locale selection and structured entry data. |
| delete_an_entry | Deletes a specified entry from a Contentstack stack, targeting the provided content type and entry UID, with optional parameters for branch, locale, and deletion of all localized variants. |
| get_all_entries | Retrieves entry details for a specified content type within a Contentstack stack, supporting branch selection, pagination, versioning, locale filtering, advanced query parameters, optional draft overlay, and optional inclusion of metadata, workflow, branch, and publish details. |
| get_single_entry | Retrieves metadata and field values for a specified entry within a given content type, supporting branch, version, and locale selection. |
| update_an_entry | Updates an existing entry in the given content type, branch, and locale by replacing its field data. |
| get_all_content_types | Retrieves all content types in the stack, with pagination, query filtering, and optional inclusion of the global field schema. |
| get_a_single_content_type | Retrieves the schema and configuration details of a specified content type within a stack. |
| create_a_content_type | Creates a new content type in the specified Contentstack stack, supporting branch selection and optional branch metadata inclusion. |
| update_content_type | Updates an existing content type in the specified Contentstack stack. |
| delete_content_type | Deletes an existing content type and all the entries within it. |
| get_all_references_of_ct | Retrieves the content types that reference the specified content type, including direct and nested references. |
| export_content_type | Exports a specific content type and its schema as JSON. |
| get_all_taxonomies | Retrieves metadata for all taxonomies in the stack, with pagination and typeahead search by UID or name. |
| get_a_single_taxonomy | Retrieves metadata and configuration details for a specified taxonomy. |
| export_a_taxonomy | Exports a taxonomy and all its associated terms from the specified stack. |
| get_all_languages | Retrieves metadata for all languages configured within a specified stack branch, supporting pagination. |
| get_all_assets | Retrieves metadata for all assets in the stack, with environment and folder filters, query filtering, sorting, and pagination. |
| get_all_branches | Retrieves metadata for all branches within a specified stack, supporting pagination. |
| create_a_branch | Creates a new branch in the specified Contentstack stack. |
| get_a_single_branch | Retrieves metadata and configuration details for a specified branch within a Contentstack stack. |
| delete_a_branch | Deletes a branch in the specified Contentstack stack. |
| compare_branches | Retrieves a list of all the differences between two branches. |
| compare_content_types_between_branches | Retrieves a list of all the differences in content types between the two specified branches. |
| compare_global_fields_between_branches | Retrieves a list of all the differences in global fields between the two specified branches. |
| compare_specific_ct_between_branches | Retrieves all the differences of the specified content type between the two specified branches. |
| compare_specific_gf_between_branches | Retrieves all the differences of the specified global field between the two specified branches. |
| get_all_merge_jobs | Retrieves a list of all the recent merge jobs within a specific period. |
| merge_branch | Merges content types and global fields from a compare branch into a base branch, with optional per-item strategy overrides. |
| get_a_single_merge_job | Retrieves detailed information for a specified merge job within a stack. |
| get_a_single_branch_alias | Retrieves metadata and configuration details for a specified branch alias within a Contentstack stack. |
| get_all_branch_aliases | Retrieves metadata for all branch aliases within a specified stack, supporting pagination. |
| assign_a_branch_alias | Assigns (creates or updates) a branch alias so it points to a target branch in the stack. |
| delete_a_branch_alias | Permanently deletes the specified branch alias from the selected stack. |
| get_all_global_fields | Retrieves metadata for all global fields configured within the specified stack. |
| get_all_items_in_a_release | Retrieves metadata and content details for all items associated with the specified release. |
| get_all_releases | Retrieves metadata for all releases in the stack, with pagination and optional inclusion of total and item counts. |
| get_all_terms | Retrieves all term details for a specified taxonomy from the stack, supporting pagination. |
| get_all_terms_across_all_taxonomies | Retrieves term details from all taxonomies within the stack, supporting typeahead search, pagination, and optional total count inclusion. |
| get_all_variants_of_an_entry | Retrieves all variants (personalization variants) of a specified entry within the selected content type. |
| get_all_ancestors_of_a_term | Retrieves the complete ancestor hierarchy for a specified term within a taxonomy, supporting pagination. |
| get_a_single_asset | Retrieves metadata and properties for a specified asset within a Contentstack stack, supporting branch, environment, and version parameters. |
| get_asset_reference | Retrieves all entries referencing the specified asset within the selected branch, enabling asset dependency analysis. |
| get_all_descendants_of_a_term | Retrieves all descendant terms of a specified taxonomy term, supporting pagination. |
| get_a_single_release | Retrieves metadata and configuration details for a specified release within a given branch. |
| get_single_entry_variant | Retrieves a specific variant of a content entry from a designated content type, branch, and locale. |
| get_a_single_global_field | Retrieves metadata and configuration details for a specified global field within a Contentstack stack. |
| get_a_single_variant | Retrieves details of a single variant within a variant group. |
| get_a_single_term | Retrieves detailed metadata for a specified taxonomy term. |
| get_all_variants_of_a_content_type | Retrieves all variant definitions (variant groups) linked to the specified content type. |
| get_publish_queue | Retrieves the publish queue for the branch — the log of publish, unpublish, and delete activities on entries and assets. |
| get_references_of_an_entry | Retrieves all entries that reference the specified entry via reference fields. |
| add_items_to_a_release | Programmatically adds specified content items to a designated release within a Contentstack stack branch. |
| clone_a_release | Creates a duplicate of an existing release in the specified branch, assigning a new name and optional description. |
| localize_an_entry | Localizes a specified entry within a stack by creating or updating its content for the target locale. |
| create_a_release | Creates a new empty release object within the specified stack branch. |
| create_a_taxonomy | Creates a new taxonomy object within the specified stack. |
| create_a_term | Creates a new term within a specified taxonomy by assigning a unique identifier, name, order, and optional parent term. |
| delete_an_asset | Permanently deletes the specified asset from the selected branch within the stack. |
| delete_a_taxonomy | Deletes the specified taxonomy and all associated terms from the stack. |
| delete_a_term | Deletes a specified term from a taxonomy; supports forced deletion. |
| get_all_environments | Fetches the list of environments in the stack, with optional total-count reporting and sorting. |
| create_an_environment | Creates a new environment in the stack by specifying its name and one or more locale-specific base URLs. |
| get_an_environment | Retrieves full details for a single environment, identified by its name. |
| update_an_environment | Updates an existing environment — name and/or locale-to-URL mappings. |
| delete_an_environment | Permanently deletes an environment, identified by its name. |
| deploy_a_release | Deploys a release to one or more target environments, publishing or unpublishing all of its items. Supports optional scheduling. |
| update_a_taxonomy | Updates the name and description fields of a specified taxonomy entity. |
| update_a_term | Updates the name property of a specified term within a taxonomy. |
| delete_items_from_a_release | Programmatically removes specified content items from a designated release. |
| publish_an_asset | Publishes a specified asset to one or more environments and locales, with optional scheduling. |
| unpublish_an_asset | Unpublishes a specified asset from selected environments and locales, with optional scheduling. |
| unlocalize_an_entry | Unlocalizes a specified entry in a given locale, restoring it to its fallback state. |
| create_an_entry_variant | Creates an entry variant for an existing base entry. |
| delete_an_entry_variant | Deletes a specified entry variant from a base entry. |
Content Management API Extended (CMA Extended)
Load alongside cma with GROUPS=cma,cma-extended.
| Tool | Description |
|---|---|
| get_audit_log | Retrieves a paginated list of audit log entries for the stack. Every create, update, delete, publish, and unpublish action is recorded. |
| get_audit_log_item | Retrieves the full detail of a single audit log entry, including before and after field values, the user who made the change, and the timestamp. |
| get_all_versions_of_an_entry | Retrieves the full version history of a specific entry. |
| set_entry_version_name | Assigns a human-readable label to a specific version of an entry. Named versions are visible in the Contentstack UI. |
| delete_entry_version_name | Removes the label previously assigned to a specific entry version. The version itself is not deleted. |
| create_a_global_field | Creates a new global field in the stack. Changes propagate to every content type that uses it. |
| update_a_global_field | Updates the schema or title of an existing global field. Changes propagate to every content type that embeds this global field. |
| delete_a_global_field | Permanently deletes a global field and removes its embedded occurrence from every content type that references it. This action cannot be undone. |
| export_global_field | Exports a global field definition as a JSON object. |
| update_asset_details | Updates the metadata of an existing asset — title, description, or tags — without replacing the underlying file. |
| get_assets_of_a_specific_folder | Retrieves assets contained in a specific folder by its UID, with optional sub-folder inclusion and publish detail filters. |
| get_assets_and_subfolders_of_a_parent_folder | Retrieves both asset files and sub-folder entries within a parent folder. |
| create_asset_folder | Creates a new folder in the asset library, optionally nested under a parent folder. |
| update_asset_folder | Renames an existing asset folder. |
| delete_asset_folder | Permanently deletes an asset folder and all assets and sub-folders it contains. This action cannot be undone. |
| get_all_versions_of_an_asset | Retrieves the full version history of a specific asset. |
| set_asset_version_name | Assigns a human-readable label to a specific version of an asset. |
| delete_asset_version_name | Removes the label previously assigned to a specific asset version. The version itself is not deleted. |
| get_all_workflows | Retrieves all workflows defined in the stack. |
| get_a_single_workflow | Retrieves the complete definition of a single workflow, including all stages, transition rules, and role-based permissions. |
| get_publish_rules | Retrieves publish rules for workflows in the stack, defining which workflow stages allow or block publishing. |
| get_publish_queue_activity | Retrieves a recent activity summary for the publish queue across the entire stack. |
Content Delivery API (CDA)
| Tool | Description |
|---|---|
| get_all_assets_cdn | Retrieves published assets from the CDN. Returns metadata including URLs, file types, dimensions, and publish status. Supports pagination, branch and locale selection, and optional image dimension inclusion. |
| get_all_entries_cdn | Retrieves published entries of a content type from the CDN for fast, global delivery. Supports filtering, sorting, reference resolution, locale selection, and fallback. Maximum 100 entries per request. |
| get_a_single_asset_cdn | Retrieves a specific published asset from the CDN by its unique identifier. |
| get_a_single_entry_cdn | Retrieves a specific published entry from the CDN by its unique identifier and content type. |
Analytics API
All analytics tools are asynchronous: they return a jobId that you pass to get_job_data to retrieve results.
| Tool | Description |
|---|---|
| get_subscription_usage | Retrieves a summary of Launch resource consumption within your organisation for a specified date range. Returns a jobId for get_job_data. |
| get_device_usage | Analyzes device and SDK usage patterns across your Contentstack services over a specified period. Returns a jobId for get_job_data. |
| get_usage_analytics | Retrieves API and CDN usage analytics broken down by service type. Returns a jobId for get_job_data. |
| get_top_urls | Analyzes URL-level traffic patterns across your Contentstack services. Returns a jobId for get_job_data. |
| get_status_code | Retrieves HTTP status code distribution across your services for a specified period. Returns a jobId for get_job_data. |
| get_cache_usage | Analyzes cache performance by tracking HIT and MISS rates across your services. Returns a jobId for get_job_data. |
| get_sdk_usage | Tracks SDK adoption and usage patterns across your services. Returns a jobId for get_job_data. |
| get_job_data | Retrieves the completed results for an asynchronous analytics job using its jobId. If the job is still processing, returns "200 Job active" — retry after a short delay. |
BrandKit AI
| Tool | Description |
|---|---|
| create_an_content_in_knowledge_vault | Creates new content in the Brand Kit Knowledge Vault to provide contextual information for AI-powered content generation. |
| get_all_contents_in_knowledge_vault | Retrieves all content entries stored in the Knowledge Vault for a specific Brand Kit. |
| get_a_single_content_in_knowledge_vault | Retrieves detailed information for a specific content entry in the Knowledge Vault by its unique identifier. |
| update_a_content_in_knowledge_vault | Modifies existing content in the Knowledge Vault. |
| delete_a_content_from_knowledge_vault | Permanently removes a content entry from the Knowledge Vault. This action is irreversible. |
| create_a_voice_profile | Creates a new Voice Profile that defines tone, style, and communication characteristics for AI-generated content. |
| get_all_voice_profiles | Retrieves all Voice Profiles configured for a Brand Kit. |
| get_a_single_voice_profile | Retrieves detailed configuration for a specific Voice Profile. |
| update_a_voice_profile | Modifies an existing Voice Profile's characteristics. |
| delete_a_voice_profile | Permanently removes a Voice Profile from the Brand Kit. This action is irreversible. |
| generative_ai | Generates AI-powered content based on a custom prompt while maintaining brand consistency. Optionally leverages Voice Profiles and Knowledge Vault context. |
| get_data_chunks_from_knowledge_vault | Searches the Knowledge Vault to retrieve relevant data chunks that match a query string. Semantic search over brand guidelines and reference materials. |
Launch API
| Tool | Description |
|---|---|
| get_environments | Retrieves environment configurations with build settings, deployment information, password protection, and recent commits. |
| get_deploy_hooks | Retrieves deploy hooks configurations with filtering capabilities using cursor-based pagination. |
| get_latest_live_deployment | Retrieves the most recent live deployment for a specified environment or project, including build configuration, Git information, deployment status, and performance metrics. |
| create_deploy_hook | Creates a new deploy hook for an environment, enabling integration with CI/CD pipelines and external automation systems. |
| update_deploy_hook | Updates an existing deploy hook configuration — name and environment association. |
| delete_deploy_hook | Deletes an existing deploy hook, permanently disabling its webhook URL. |
| trigger_deploy_hook | Triggers an existing deploy hook for manual or automated re-deployments. |
| create_deployment | Creates a new deployment for the specified environment using the latest commit from the configured Git branch. |
| revalidate_cdn_cache | Revalidates the CDN cache for an environment, prompting the CDN to fetch the latest content from origin. |
| get_all_projects | Fetches the list of all projects in your organisation with pagination support. |
| create_a_project | Creates a project in Launch using either a Git Provider or File Upload. |
| get_a_project | Fetches a specific project in Launch using the project UID. |
| update_a_project | Updates an existing project — name and description. |
| delete_a_project | Deletes an existing project and all associated environments and deployments. This action is permanent. |
| get_all_environments | Fetches the list of all environments in a project with pagination support. |
| create_an_environment | Creates a new environment in your Launch project, specifying the Git branch or uploading a ZIP file. |
| get_an_environment | Fetches a specific environment using the project UID and environment UID. |
| update_an_environment | Updates an environment — build settings, Git branch, environment variables, password protection, and feature flags. |
| delete_an_environment | Deletes an existing environment and all associated deployments. This action is permanent. |
| get_signed_upload_url_project | Fetches the signed URL for uploading a ZIP file when creating a project via file upload. Valid for 10 minutes. |
| get_signed_upload_url_environment | Fetches the signed URL for uploading a ZIP file when creating an environment via file upload. Valid for 10 minutes. Only available for FILEUPLOAD projects. |
| get_signed_upload_url_deployment | Retrieves the signed URL for uploading a ZIP file when creating or redeploying a deployment. Valid for 10 minutes. |
| get_signed_download_url_deployment | Returns the signed URL to download the uploaded file from the latest deployment. Valid for 15 minutes. |
| get_all_deployments | Fetches the list of all deployments within a specific environment, with build status, Git commit info, duration, and preview URLs. |
| get_deployment | Retrieves a specific deployment from an environment using project UID, environment UID, and deployment UID. |
| get_deployment_logs | Fetches the deployment (build) logs of a specific deployment. |
| get_server_logs | Fetches the runtime server logs of a specific deployment. Requires startTime and endTime parameters. |
Developer Hub
| Tool | Description |
|---|---|
| get_an_app | Retrieves detailed information for a specific Marketplace App including configuration, metadata, target type, and optionally OAuth settings. |
| get_all_apps | Retrieves all Marketplace Apps in your organisation with filtering, search, sorting, and pagination. |
| get_app_oauth | Retrieves the complete OAuth 2.0 configuration for a Marketplace App including client credentials, redirect URIs, and allowed scopes. |
| get_oauth_scopes | Retrieves the complete list of available OAuth scopes, optionally filtered by app type. |
| create_an_app | Creates a new Marketplace App in your organisation. |
| update_app_oauth | Updates the OAuth configuration for a Marketplace App. |
| update_an_app | Updates an existing Marketplace App's configuration including name, description, advanced settings, UI locations, and webhooks. |
| delete_an_app | Permanently deletes a Marketplace App. Fails if the app is currently installed in any stack — uninstall from all stacks first. |
| install_an_app | Installs a Marketplace App into a target stack or organisation. |
| update_an_app_installation | Updates a specified app installation in a stack or organisation. |
| get_app_installations | Retrieves all installations of a specific Marketplace App, showing which stacks or organisations have it deployed. |
| uninstall_an_app | Uninstalls a Marketplace App from a target stack or organisation, revoking its access to APIs and data. |
Lytics Analytics
| Tool | Description |
|---|---|
| classify_content | Scrapes and analyzes a website URL to extract and classify content topics, storing results in Lytics for audience segmentation. |
| enrich_content | Enriches content by analyzing a website URL or raw text through Lytics' AI engine. Returns inferred topics, themes, and content classifications. |
| lytics_get_all_audiences | Retrieves all audience segments defined in your Lytics account, including type, validity status, and associated data tables. |
| get_field_information | Retrieves detailed field metadata for a specific audience segment: field definitions, data types, value distributions, and statistics. |
| lytics_get_a_single_audience | Retrieves detailed configuration and metrics for a specific audience segment by its unique identifier. |
| get_content_topics | Retrieves the complete taxonomy of content topics configured in your Lytics account. |
| get_a_user_profile | Retrieves a comprehensive user profile from Lytics by searching for a specific identifier (email, user ID, device ID, etc.). |
| get_accounts | Retrieves all Lytics accounts associated with your instance. |
| get_fields | Retrieves all user schema fields configured in your Lytics account. |
| get_tables | Retrieves schema information for all data tables in your Lytics account (typically User and Content tables). |
Personalize API
| Tool | Description |
|---|---|
| create_attribute | Creates a new custom attribute in a Personalize project, defining user characteristics for audience segmentation. |
| get_all_attributes | Retrieves all custom and preset attributes available in a Personalize project. |
| update_attribute | Modifies an existing attribute's properties — name, key, or description. |
| delete_attribute | Permanently removes an attribute from a Personalize project. |
| get_all_audiences | Retrieves all audience segments from a Personalize project, with optional filtering by referenced attributes. |
| delete_audience | Permanently removes an audience segment from a Personalize project. |
| create_experience | Creates a new personalization experience (Segmented or A/B Test) in a Personalize project, automatically generating a draft version for configuration. |
| get_all_experiences | Retrieves all personalization experiences from a Personalize project, with optional filtering by referenced audiences or events. |
| get_single_experience | Retrieves detailed information about a specific personalization experience, including its current configuration and status. |
| update_experience | Modifies an existing experience's metadata — name and description. |
| delete_experience | Permanently removes a personalization experience including all associated versions and configurations. |
| get_experience_versions | Retrieves all versions of a specific experience, sorted by creation date. |
| delete_experience_version | Discards a draft version of an experience. Active, paused, or archived versions cannot be deleted. |
| get_experiences_priority | Retrieves the priority order configuration for all experiences in a project. |
| update_experiences_priority | Modifies the priority order of experiences, controlling which experience displays when multiple target the same content area. |
| create_event | Creates a new event definition for tracking user interactions and measuring experience performance. |
| get_all_events | Retrieves all event definitions from a Personalize project. |
| update_event | Modifies an existing event definition — key identifier and description. |
| delete_event | Permanently removes an event definition from a Personalize project. |
| get_analytics_summary | Retrieves performance analytics summary for a specific experience version, including impressions, conversions, and probability-to-be-best calculations. |
| get_analytics_timeseries | Retrieves hourly time-series analytics data for a specific experience version. |
| get_countries | Retrieves country information based on ISO 3166-1 standard for geographic targeting in audience definitions. |
| get_regions | Retrieves region information based on ISO 3166-2 standard for state-level geographic targeting. |
| get_cities | Retrieves city information for local-level geographic targeting in Personalize audience definitions. |
