> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Contentful MCP server

The Contentful MCP connector routes your AI agent's tool calls to Contentful's own MCP server through Scalekit. Each user signs in to Contentful once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 70 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Files & Documents, Productivity, Collaboration
**Tools:** 70: 27 read, 24 write, 19 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=CONTENTFULMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Contentful MCP connection

   In **AgentKit > Connections**, create a Contentful MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Contentful MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'contentfulmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Contentful MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'contentfulmcp_get_initial_context',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "contentfulmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Contentful MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="contentfulmcp_get_initial_context",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'contentfulmcp_get_ai_action',
  toolInput: {
    aiActionId: '<aiActionId>',
    environmentId: 'master',
    spaceId: '<spaceId>',
  },
  connector: 'contentfulmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="contentfulmcp_get_ai_action",
    tool_input={
        "aiActionId": "<aiActionId>",
        "environmentId": "master",
        "spaceId": "<spaceId>",
    },
    connection_name="contentfulmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `contentfulmcp_get_ai_action`

Get Ai Action · Read-only

Retrieve details of a specific AI action including its instruction template and configuration.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `aiActionId` (`string`, required): The unique identifier of the AI action.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"aiActionId":"<aiActionId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_get_ai_action_invocation`

Get Ai Action Invocation · Read-only

Retrieve the result and status of a specific AI action invocation.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `aiActionId` (`string`, required): The unique identifier of the AI action.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `invocationId` (`string`, required): The unique identifier of the AI action invocation.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"aiActionId":"<aiActionId>","environmentId":"master","invocationId":"<invocationId>","spaceId":"<spaceId>"}`

### `contentfulmcp_get_asset`

Get Asset · Read-only

Retrieve details of a specific asset including its file metadata and upload status.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `assetId` (`string`, required): The unique identifier of the asset.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"assetId":"<assetId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_get_concept`

Get Concept · Read-only

Retrieve details of a specific taxonomy concept including labels and relationships.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conceptId` (`string`, required): The unique identifier of the taxonomy concept.
- `organizationId` (`string`, required): The unique identifier of the Contentful organization.

Example input: `{"conceptId":"<conceptId>","organizationId":"<organizationId>"}`

### `contentfulmcp_get_concept_scheme`

Get Concept Scheme · Read-only

Retrieve details of a specific taxonomy concept scheme including its top-level concepts.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conceptSchemeId` (`string`, required): The unique identifier of the taxonomy concept scheme.
- `organizationId` (`string`, required): The unique identifier of the Contentful organization.

Example input: `{"conceptSchemeId":"<conceptSchemeId>","organizationId":"<organizationId>"}`

### `contentfulmcp_get_content_type`

Get Content Type · Read-only

Retrieve the field definitions and metadata of a specific content type.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_get_editor_interface`

Get Editor Interface · Read-only

Retrieve the editor interface configuration for a specific content type.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_get_entry`

Get Entry · Read-only

Retrieve a single entry by its ID from a Contentful space and environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `entryId` (`string`, required): The unique identifier of the entry.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_get_entry_snapshot`

Get Entry Snapshot · Read-only

Retrieve version history (snapshots) of an entry for safe rollback. Call with only an entryId to list all available snapshots, or with both entryId and snapshotId to retrieve the full field content of that specific snapshot.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `entryId` (`string`, required): The ID of the entry to retrieve snapshots for.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `snapshotId` (`string`, optional): Optional snapshot ID. When provided, returns the full content of that single snapshot. When omitted, lists all available snapshots for the entry.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_get_initial_context`

Get Initial Context · Read-only

Retrieve initial context and usage instructions for the Contentful MCP server. Call this before using other tools.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `contentfulmcp_get_locale`

Get Locale · Read-only

Retrieve details of a specific locale including its fallback and API settings.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `localeId` (`string`, required): The unique identifier of the locale (e.g. 'en-US').
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"environmentId":"master","localeId":"en-US","spaceId":"<spaceId>"}`

### `contentfulmcp_get_org`

Get Org · Read-only

Retrieve details of a specific Contentful organization by its ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `organizationId` (`string`, required): The unique identifier of the Contentful organization.

Example input: `{"organizationId":"<organizationId>"}`

### `contentfulmcp_get_space`

Get Space · Read-only

Retrieve details of a specific Contentful space by its ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"spaceId":"<spaceId>"}`

### `contentfulmcp_list_ai_actions`

List Ai Actions · Read-only

Retrieve a paginated list of AI actions defined in a Contentful environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `include` (`number`, optional): Number of levels of linked entries to resolve and include in the response.
- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{"environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_list_assets`

List Assets · Read-only

Retrieve a paginated list of assets in a Contentful environment with optional filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `include` (`number`, optional): Number of levels of linked entries to resolve and include in the response.
- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `links_to_entry` (`string`, optional): Return only assets or entries that link to the specified entry ID.
- `locale` (`string`, optional): The locale code to filter results by (e.g. 'en-US').
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{"environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_list_concept_schemes`

List Concept Schemes · Read-only

Retrieve taxonomy concept schemes in a Contentful organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `query` (`string`, optional): Query parameters for listing concept schemes, supports either pageUrl for cursor-based pagination.  Offset "skip" pagination is not supported.

Example input: `{"organizationId":"<organizationId>"}`

### `contentfulmcp_list_concepts`

List Concepts · Read-only

Retrieve taxonomy concepts in a Contentful organization with optional ancestor/descendant traversal.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `conceptId` (`string`, optional): The unique identifier of the taxonomy concept.
- `getAncestors` (`boolean`, optional): Set to true to return ancestor concepts of the specified concept.
- `getDescendants` (`boolean`, optional): Set to true to return descendant concepts of the specified concept.
- `getTotalOnly` (`boolean`, optional): Set to true to return only the total count of concepts.
- `include` (`number`, optional): Number of levels of linked entries to resolve and include in the response.
- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.

Example input: `{"organizationId":"<organizationId>"}`

### `contentfulmcp_list_content_types`

List Content Types · Read-only

Retrieve a paginated list of content types in a Contentful environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `include` (`number`, optional): Number of levels of linked entries to resolve and include in the response.
- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{"environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_list_editor_interfaces`

List Editor Interfaces · Read-only

Retrieve editor interface configurations for all content types in an environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_list_environments`

List Environments · Read-only

Retrieve a paginated list of environments within a Contentful space.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `environmentId` (`string`, optional): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{"spaceId":"<spaceId>"}`

### `contentfulmcp_list_locales`

List Locales · Read-only

Retrieve a paginated list of locales configured in a Contentful environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `include` (`number`, optional): Number of levels of linked entries to resolve and include in the response.
- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{"environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_list_orgs`

List Orgs · Read-only

Retrieve a paginated list of Contentful organizations the user belongs to.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{}`

### `contentfulmcp_list_spaces`

List Spaces · Read-only

Retrieve a paginated list of Contentful spaces accessible to the authenticated user.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{}`

### `contentfulmcp_list_tags`

List Tags · Read-only

Retrieve a paginated list of tags in a Contentful environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `limit` (`number`, optional): Maximum number of items to return per page (max 1000).
- `order` (`string`, optional): Field to order results by (prefix with '-' for descending, e.g. '-sys.updatedAt').
- `select` (`string`, optional): Comma-separated list of fields to include in the response.
- `skip` (`number`, optional): Number of items to skip for pagination.

Example input: `{"environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_resolve_entry_references`

Resolve Entry References · Read-only

Recursively resolve an entry's references and return the entry plus its descendant entries and linked assets, without issuing one fetch per descendant. Set 'include' (1-10, default 2) to control how many levels deep to walk.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `entryId` (`string`, required): The ID of the entry whose references should be resolved.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `include` (`integer`, optional): How many levels of linked entries to walk (1-10, default: 2). The CMA caps this at 10. Default: `2`.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_search_entries`

Search Entries · Read-only

Search for entries in a Contentful space using flexible query parameters including field filters and full-text search.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `query` (`object`, required): Flexible search parameters supporting ANY Contentful API query parameter. Use fields.* for field searches, sys.* for system fields, and any other Contentful API parameter.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"environmentId":"master","query":{},"spaceId":"<spaceId>"}`

### `contentfulmcp_semantic_search`

Semantic Search · Read-only

Find entries by meaning using semantic (vector) search. Provide a descriptive natural-language query of what you're looking for; phrases resembling entry content work best. Optionally restrict to specific content types. Returns up to 10 matching entry references (unranked); use get_entry to fetch full content. Requires semantic search to be enabled for the environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `query` (`string`, required): Natural-language description of what you are looking for. Phrases that resemble the content of the entries you want match best; avoid questions or JSON.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `contentTypeIds` (`array`, optional): Restrict the search to entries of these content type IDs.

Example input: `{"environmentId":"master","query":"<query>","spaceId":"<spaceId>"}`

### `contentfulmcp_append_entry_field`

Append Entry Field · Write

Append one or more items to an array-typed entry field (Array of Symbols, Links, or ResourceLinks) entirely server-side, deduplicating survivors before writing back only the target field/locale. Prefer this over update_entry when adding items to large reference arrays, since update_entry replaces the full array and can silently lose items if the agent held a truncated read.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `entryId` (`string`, required): The ID of the entry to modify.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fieldId` (`string`, required): The ID of the array field to append to.
- `locale` (`string`, required): The locale key to target (e.g. 'en-US'). Fields are locale-keyed; you must supply the exact locale string.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `values` (`array`, required): One or more items to append. Each item must match the element shape of the target array field: a plain string for Array of Symbols, {sys:{type:'Link', linkType:'Entry'|'Asset', id:'...'}} for Array of Links, or {sys:{type:'ResourceLink', linkType:'...', urn:'...'}} for Array of ResourceLinks.
- `version` (`number`, optional): Optional. The entry's sys.version as returned by get_entry. If provided, the append is rejected when the entry has changed since you read it. If omitted, the append targets the current server state without a version check.

Example input: `{"entryId":"<entryId>","environmentId":"master","fieldId":"<fieldId>","locale":"en-US","spaceId":"<spaceId>","values":[]}`

### `contentfulmcp_create_ai_action`

Create Ai Action · Write

Create a new AI action with a prompt instruction template, model configuration, and optional test cases.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `configuration` (`object`, required): The configuration for the AI action
- `description` (`string`, required): An optional description for the resource.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `instruction` (`object`, required): The instruction for the AI action
- `name` (`string`, required): A human-readable name for the resource.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `testCases` (`array`, optional): Test cases for the AI action

Example input: `{"configuration":{},"description":"<description>","environmentId":"master","instruction":{},"name":"<name>","spaceId":"<spaceId>"}`

### `contentfulmcp_create_concept`

Create Concept · Write

Create a new taxonomy concept with labels, definitions, and hierarchical relationships.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `prefLabel` (`object`, required): The preferred label for the concept (localized)
- `altLabels` (`object`, optional): Alternative labels for the concept (localized)
- `broader` (`array`, optional): Links to broader concepts
- `conceptId` (`string`, optional): The unique identifier of the taxonomy concept.
- `definition` (`object`, optional): Definition of the concept (localized)
- `editorialNote` (`object`, optional): Editorial note for the concept (localized)
- `example` (`object`, optional): Example for the concept (localized)
- `hiddenLabels` (`object`, optional): Hidden labels for the concept (localized)
- `historyNote` (`object`, optional): History note for the concept (localized)
- `notations` (`array`, optional): An array of notation strings for this concept.
- `note` (`object`, optional): General note for the concept (localized)
- `related` (`array`, optional): An array of related concept IDs.
- `scopeNote` (`object`, optional): Scope note for the concept (localized)
- `uri` (`string`, optional): A unique URI identifying this concept or concept scheme.

Example input: `{"organizationId":"<organizationId>","prefLabel":{}}`

### `contentfulmcp_create_concept_scheme`

Create Concept Scheme · Write

Create a new taxonomy concept scheme for organizing related concepts.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `prefLabel` (`object`, required): The preferred label for the concept scheme (localized)
- `conceptSchemeId` (`string`, optional): The unique identifier of the taxonomy concept scheme.
- `definition` (`object`, optional): Definition of the concept scheme (localized)
- `editorialNote` (`object`, optional): Editorial note for the concept scheme (localized)
- `example` (`object`, optional): Example for the concept scheme (localized)
- `historyNote` (`object`, optional): History note for the concept scheme (localized)
- `note` (`object`, optional): General note for the concept scheme (localized)
- `scopeNote` (`object`, optional): Scope note for the concept scheme (localized)
- `topConcepts` (`array`, optional): Links to top-level concepts in this scheme
- `uri` (`string`, optional): A unique URI identifying this concept or concept scheme.

Example input: `{"organizationId":"<organizationId>","prefLabel":{}}`

### `contentfulmcp_create_content_type`

Create Content Type · Write

Create a new content type with the specified fields in a Contentful environment.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `displayField` (`string`, required): The ID of the field to use as the display field for the content type.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fields` (`array`, required): Array of field definitions for the content type
- `name` (`string`, required): A human-readable name for the resource.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `contentTypeId` (`string`, optional): The ID of the content type. Use list_content_types to look up available IDs.
- `description` (`string`, optional): An optional description for the resource.
- `metadata` (`object`, optional): No description.

Example input: `{"displayField":"<displayField>","environmentId":"master","fields":[],"name":"<name>","spaceId":"<spaceId>"}`

### `contentfulmcp_create_entry`

Create Entry · Write

Create a new entry of a specified content type with the provided field values.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fields` (`object`, required): The field values for the new entry. Keys should be field IDs and values should be the field content.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `metadata` (`object`, optional): No description.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","fields":{},"spaceId":"<spaceId>"}`

### `contentfulmcp_create_environment`

Create Environment · Write

Create a new environment in a Contentful space, optionally cloning from an existing one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `name` (`string`, required): A human-readable name for the resource.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `sourceEnvironmentId` (`string`, optional): The ID of the environment to clone when creating the new environment.

Example input: `{"environmentId":"master","name":"<name>","spaceId":"<spaceId>"}`

### `contentfulmcp_create_locale`

Create Locale · Write

Create a new locale in a Contentful environment with the specified language code and settings.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `code` (`string`, required): The locale code in BCP 47 format (e.g. 'en-US', 'de-DE').
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fallbackCode` (`string`, required): The locale code to fall back to when content is not available in this locale.
- `name` (`string`, required): A human-readable name for the resource.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `contentDeliveryApi` (`boolean`, optional): Whether this locale is enabled for the Content Delivery API. Default: `true`.
- `contentManagementApi` (`boolean`, optional): Whether this locale is enabled for the Content Management API. Default: `true`.
- `default` (`boolean`, optional): Whether this locale is the default locale for the environment. Default: `false`.
- `optional` (`boolean`, optional): Whether this locale is optional (allows missing translations). Default: `false`.

Example input: `{"code":"en-US","environmentId":"master","fallbackCode":"<fallbackCode>","name":"<name>","spaceId":"<spaceId>"}`

### `contentfulmcp_create_tag`

Create Tag · Write

Create a new tag with the specified ID, name, and visibility in a Contentful environment.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `id` (`string`, required): The unique identifier for the tag (must be unique within the environment).
- `name` (`string`, required): A human-readable name for the resource.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `visibility` (`string`, required): Controls tag visibility. Accepted values: public, private. One of: `public`, `private`.

Example input: `{"environmentId":"master","id":"<id>","name":"<name>","spaceId":"<spaceId>","visibility":"public"}`

### `contentfulmcp_create_upload_session`

Create Upload Session · Write

Create a short-lived upload session for staging a binary file to Contentful before creating an asset.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `contentfulmcp_disable_content_type_field`

Disable Content Type Field · Write

Toggle the disabled and/or omitted flags on a single content type field. Disabling hides the field from the editor UI; omitting removes it from API responses. Both flags are reversible and take effect only after the content type is published.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type containing the field.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fieldId` (`string`, required): The ID of the field to update.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `disabled` (`boolean`, optional): Set to true to disable the field in the editor UI (editors cannot edit it), false to re-enable. Takes effect once the content type is published.
- `omitted` (`boolean`, optional): Set to true to omit the field from API responses, false to include it again. Takes effect once the content type is published. Prefer omit_content_type_field when only changing this flag.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","fieldId":"<fieldId>","spaceId":"<spaceId>"}`

### `contentfulmcp_invoke_ai_action`

Invoke Ai Action · Write

Execute an AI action with the specified variable values and return the generated result.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `aiActionId` (`string`, required): The unique identifier of the AI action.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fields` (`array`, required): No description.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"aiActionId":"<aiActionId>","environmentId":"master","fields":[],"spaceId":"<spaceId>"}`

### `contentfulmcp_omit_content_type_field`

Omit Content Type Field · Write

Mark a single content type field as omitted (or un-omitted) from API responses. Reversible via the same tool with omitted=false. This is a prerequisite for delete_content_type_field: a field must be omitted in the published version before it can be deleted. Takes effect only after the content type is published.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type containing the field.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fieldId` (`string`, required): The ID of the field to omit.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `omitted` (`boolean`, optional): Whether the field should be omitted. Defaults to true. Set to false to un-omit a field. Default: `true`.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","fieldId":"<fieldId>","spaceId":"<spaceId>"}`

### `contentfulmcp_unarchive_asset`

Unarchive Asset · Write

Restore one or more archived assets to make them available for editing again.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `assetId` (`string`, required): The unique identifier of the asset.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"assetId":"<assetId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_unarchive_entry`

Unarchive Entry · Write

Restore one or more archived entries to make them available for editing again.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `entryId` (`string`, required): The unique identifier of the entry.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_update_ai_action`

Update Ai Action · Write

Update an existing AI action's instruction, configuration, or test cases.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `aiActionId` (`string`, required): The unique identifier of the AI action.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `configuration` (`object`, optional): The configuration for the AI action
- `description` (`string`, optional): An optional description for the resource.
- `instruction` (`object`, optional): The instruction for the AI action
- `name` (`string`, optional): A human-readable name for the resource.
- `testCases` (`array`, optional): Test cases for the AI action

Example input: `{"aiActionId":"<aiActionId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_update_asset`

Update Asset · Write

Update an existing asset's fields or file metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `assetId` (`string`, required): The unique identifier of the asset.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fields` (`object`, required): The field values to update. Keys should be field IDs and values should be the field content. Will be merged with existing fields.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `metadata` (`object`, optional): No description.

Example input: `{"assetId":"<assetId>","environmentId":"master","fields":{},"spaceId":"<spaceId>"}`

### `contentfulmcp_update_concept`

Update Concept · Write

Update an existing taxonomy concept's labels, relationships, or metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conceptId` (`string`, required): The unique identifier of the taxonomy concept.
- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `version` (`number`, required): The current version number of the resource, used for optimistic concurrency control.
- `altLabels` (`object`, optional): Alternative labels for the concept (localized)
- `broader` (`array`, optional): Links to broader concepts
- `definition` (`object`, optional): Definition of the concept (localized)
- `editorialNote` (`object`, optional): Editorial note for the concept (localized)
- `example` (`object`, optional): Example for the concept (localized)
- `hiddenLabels` (`object`, optional): Hidden labels for the concept (localized)
- `historyNote` (`object`, optional): History note for the concept (localized)
- `notations` (`array`, optional): An array of notation strings for this concept.
- `note` (`object`, optional): General note for the concept (localized)
- `prefLabel` (`object`, optional): The preferred label for the concept (localized)
- `related` (`array`, optional): An array of related concept IDs.
- `scopeNote` (`object`, optional): Scope note for the concept (localized)
- `uri` (`string`, optional): A unique URI identifying this concept or concept scheme.

Example input: `{"conceptId":"<conceptId>","organizationId":"<organizationId>","version":1}`

### `contentfulmcp_update_concept_scheme`

Update Concept Scheme · Write

Update an existing taxonomy concept scheme's labels, definitions, or top-level concepts.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conceptSchemeId` (`string`, required): The unique identifier of the taxonomy concept scheme.
- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `version` (`number`, required): The current version number of the resource, used for optimistic concurrency control.
- `addConcept` (`string`, optional): The ID of the concept to add as a top-level concept in the scheme.
- `definition` (`object`, optional): Definition of the concept scheme (localized)
- `editorialNote` (`object`, optional): Editorial note for the concept scheme (localized)
- `example` (`object`, optional): Example for the concept scheme (localized)
- `historyNote` (`object`, optional): History note for the concept scheme (localized)
- `note` (`object`, optional): General note for the concept scheme (localized)
- `prefLabel` (`object`, optional): The preferred label for the concept scheme (localized)
- `scopeNote` (`object`, optional): Scope note for the concept scheme (localized)
- `topConcepts` (`array`, optional): Links to top-level concepts in this scheme
- `uri` (`string`, optional): A unique URI identifying this concept or concept scheme.

Example input: `{"conceptSchemeId":"<conceptSchemeId>","organizationId":"<organizationId>","version":1}`

### `contentfulmcp_update_content_type`

Update Content Type · Write

Update an existing content type's fields or metadata, merging with existing definitions.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `description` (`string`, optional): An optional description for the resource.
- `displayField` (`string`, optional): The ID of the field to use as the display field for the content type.
- `fields` (`array`, optional): Array of field definitions for the content type. Will be merged with existing fields.
- `metadata` (`object`, optional): No description.
- `name` (`string`, optional): A human-readable name for the resource.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_update_editor_interface`

Update Editor Interface · Write

Update the field controls, sidebar widgets, and layout for a content type editor.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `controls` (`array`, optional): Array of control definitions for fields in the content type. Each control defines which widget to use for a field.
- `editorLayout` (`array`, optional): Editor layout configuration for organizing fields
- `groupControls` (`array`, optional): Array of group control definitions for field groups
- `sidebar` (`array`, optional): Array of sidebar widget configurations

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_update_entry`

Update Entry · Write

Update an existing entry by merging the provided field values with the existing ones. Requires the entry's current sys.version (obtained via get_entry) - the update is rejected if the version does not match, indicating the entry changed since it was last read.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `entryId` (`string`, required): The unique identifier of the entry.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fields` (`object`, required): The field values to update. Keys should be field IDs and values should be the field content. Will be merged with existing fields.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `version` (`number`, required): REQUIRED. The entry's sys.version as returned by get_entry. You must call get_entry first to read the current state and version. The update is rejected if this does not match the entry's current version, which means the entry changed since you read it.
- `metadata` (`object`, optional): No description.

Example input: `{"entryId":"<entryId>","environmentId":"master","fields":{},"spaceId":"<spaceId>","version":1}`

### `contentfulmcp_update_locale`

Update Locale · Write

Update an existing locale's settings such as name, fallback, or API access flags.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fields` (`object`, required): No description.
- `localeId` (`string`, required): The unique identifier of the locale (e.g. 'en-US').
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"environmentId":"master","fields":{},"localeId":"en-US","spaceId":"<spaceId>"}`

### `contentfulmcp_upload_asset`

Upload Asset · Write

Upload a new asset to Contentful from a URL or file handle.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `file` (`object`, required): The file information for the asset. Prefer file.uploadHandle for remote uploads so the client can stage raw bytes to the worker first.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `title` (`string`, required): The title of the asset.
- `description` (`string`, optional): An optional description for the resource.
- `locale` (`string`, optional): The locale code to filter results by (e.g. 'en-US').
- `metadata` (`object`, optional): No description.

Example input: `{"environmentId":"master","file":{},"spaceId":"<spaceId>","title":"<title>"}`

### `contentfulmcp_archive_asset`

Archive Asset · Destructive

Archive one or more assets that are no longer needed but should be preserved.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `assetId` (`string`, required): The unique identifier of the asset.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"assetId":"<assetId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_archive_entry`

Archive Entry · Destructive

Archive one or more entries that are no longer needed but should be preserved.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `entryId` (`string`, required): The unique identifier of the entry.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_delete_ai_action`

Delete Ai Action · Destructive

Permanently delete an AI action from a Contentful environment. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `aiActionId` (`string`, required): The unique identifier of the AI action.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"aiActionId":"<aiActionId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_delete_asset`

Delete Asset · Destructive

Permanently delete an asset from a Contentful environment. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `assetId` (`string`, required): The unique identifier of the asset.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"assetId":"<assetId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_delete_concept`

Delete Concept · Destructive

Permanently delete a taxonomy concept by its ID. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `conceptId` (`string`, required): The unique identifier of the taxonomy concept.
- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"conceptId":"<conceptId>","organizationId":"<organizationId>"}`

### `contentfulmcp_delete_concept_scheme`

Delete Concept Scheme · Destructive

Permanently delete a taxonomy concept scheme by its ID. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `conceptSchemeId` (`string`, required): The unique identifier of the taxonomy concept scheme.
- `organizationId` (`string`, required): The unique identifier of the Contentful organization.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"conceptSchemeId":"<conceptSchemeId>","organizationId":"<organizationId>"}`

### `contentfulmcp_delete_content_type`

Delete Content Type · Destructive

Permanently delete an unpublished content type from a Contentful environment. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_delete_content_type_field`

Delete Content Type Field · Destructive

Permanently mark a single content type field as deleted. Destructive and irreversible once published. The field must not be required and must already be omitted in the published version of the content type (run omit_content_type_field then publish_content_type first). Use disable_content_type_field instead to temporarily hide a field.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type containing the field.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `fieldId` (`string`, required): The ID of the field to delete.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","fieldId":"<fieldId>","spaceId":"<spaceId>"}`

### `contentfulmcp_delete_entry`

Delete Entry · Destructive

Permanently delete an entry from a Contentful environment. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `entryId` (`string`, required): The unique identifier of the entry.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_delete_environment`

Delete Environment · Destructive

Permanently delete an environment from a Contentful space. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_delete_locale`

Delete Locale · Destructive

Permanently delete a locale from a Contentful environment. This is a two-phase operation: the first call (without confirm/confirmToken) returns a preview and a confirmToken; call again with confirm: true and that confirmToken to complete the deletion.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `localeId` (`string`, required): The unique identifier of the locale (e.g. 'en-US').
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `confirm` (`boolean`, optional): Set to true on the second call to actually perform the deletion. Required together with confirmToken.
- `confirmToken` (`string`, optional): Token returned by the preview call; must be supplied with confirm: true.

Example input: `{"environmentId":"master","localeId":"en-US","spaceId":"<spaceId>"}`

### `contentfulmcp_publish_ai_action`

Publish Ai Action · Destructive

Publish an AI action to make it available for use in the Contentful editor.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `aiActionId` (`string`, required): The unique identifier of the AI action.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"aiActionId":"<aiActionId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_publish_asset`

Publish Asset · Destructive

Publish one or more assets to make them available via the Content Delivery API.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `assetId` (`string`, required): The unique identifier of the asset.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"assetId":"<assetId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_publish_content_type`

Publish Content Type · Destructive

Publish a content type to make it available for creating entries.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_publish_entry`

Publish Entry · Destructive

Publish one or more entries to make them available via the Content Delivery API.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `entryId` (`string`, required): The unique identifier of the entry.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_unpublish_ai_action`

Unpublish Ai Action · Destructive

Unpublish an AI action, removing it from the available actions in the editor.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `aiActionId` (`string`, required): The unique identifier of the AI action.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"aiActionId":"<aiActionId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_unpublish_asset`

Unpublish Asset · Destructive

Unpublish one or more assets, removing them from the Content Delivery API.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `assetId` (`string`, required): The unique identifier of the asset.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"assetId":"<assetId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_unpublish_content_type`

Unpublish Content Type · Destructive

Unpublish a content type so it can no longer be used to create new entries.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `contentTypeId` (`string`, required): The ID of the content type. Use list_content_types to look up available IDs.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.

Example input: `{"contentTypeId":"<contentTypeId>","environmentId":"master","spaceId":"<spaceId>"}`

### `contentfulmcp_unpublish_entry`

Unpublish Entry · Destructive

Unpublish one or more entries, removing them from the Content Delivery API.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `entryId` (`string`, required): The unique identifier of the entry.
- `environmentId` (`string`, required): The Contentful environment ID (e.g. 'master', 'staging'). Find it in Settings > Environments.
- `spaceId` (`string`, required): The unique identifier of the Contentful space. Find it in your Contentful dashboard under Settings > General.
- `dryRun` (`boolean`, optional): When true, returns a preview of the operation without executing it.

Example input: `{"entryId":"<entryId>","environmentId":"master","spaceId":"<spaceId>"}`

## Related

Other Files & Documents connectors ([all 33](/agentkit/connectors/?category=files-documents)):

- [Google Drive](/agentkit/connectors/googledrive/): Scalekit connector, OAuth, 47 tools
- [Google Forms](/agentkit/connectors/googleforms/): Scalekit connector, OAuth, 10 tools
- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
