---
title: "Update toolkit — rename or update description"
method: PATCH
path: "/toolkits/{toolkit_id}"
tags: ["toolkits"]
---

# Update toolkit — rename or update description

`PATCH /toolkits/{toolkit_id}`

Update toolkit metadata — name, description, disabled state, or simulation mode.

Only changed fields need to be included in the request body. Omitted fields are left unchanged.

**Note:** The default toolkit's name and description cannot be modified (403 error).

**Auth:** Requires human session (admin).

## Path parameters

- `toolkit_id` string, required — Toolkit ID to update

## Request body

- ToolkitPatch — Update toolkit metadata or toggle disabled/simulate flags. Only provided fields are changed.
  - `name` string, nullable — New toolkit name (optional)
  - `description` string, nullable — New description (optional)
  - `simulate` boolean, nullable — Toggle dry-run mode (optional)
  - `disabled` boolean, nullable — Toggle toolkit disabled state (optional)

## Response `200`

Successful Response

- ToolkitOut — Toolkit configuration with scoped credentials and access control policies.
  - `id` string, required — Toolkit ID
  - `name` string, required — Human-readable toolkit name
  - `description` string, nullable — Optional description of this toolkit's purpose
  - `created_at` number, nullable — Unix timestamp when created
  - `disabled` boolean — If true, all API keys for this toolkit are revoked
  - `key_count` integer, nullable — Number of API keys issued for this toolkit
  - `credential_count` integer, nullable — Number of credentials bound to this toolkit
  - `keys` ToolkitKeyOut[] — API keys for this toolkit (if expanded)
    - `id` string, required — Key ID (format: ck_{8chars})
    - `name` string, nullable — User-assigned key name for identification
    - `prefix` string, nullable — Key prefix (always 'tk_' for toolkit keys)
    - `allowed_ips` string[], nullable — IP CIDR ranges allowed to use this key (null = no IP restriction)
    - `revoked` boolean — True if this key has been revoked and can no longer authenticate
    - `created_at` number, nullable — Unix timestamp when key was created
  - `credentials` CredentialBindingOut[] — Credentials bound to this toolkit (if expanded)
    - `credential_id` string, required — Credential ID (format: cred_{12chars})
    - `label` string, nullable — User-assigned credential label
    - `api_id` string, nullable — API ID this credential is for
    - `auth_type` string, nullable — Auth scheme type: bearer, basic, apiKey, oauth2, etc
  - `permissions` object[] — Access control rules for this toolkit

## Other responses

- `422` — Validation Error

## Changes

- **2026-04-13** `76e8f6063728` — 13 breaking, 8 warning, 17 info
  - media type `application/problem+json` was changed to a more general media type `application/json` for the response status `422`
  - the response property `created_at` became optional for the status `200`
  - the response property `credential_count` became optional for the status `200`
  - the response property `detail` became optional for the status `422`
  - …34 more

[Change history](https://skmtc.dev/jentic/apis/jentic-control-plane-api/changes/toolkits/:toolkit_id/patch.md)

---

[API](https://skmtc.dev/jentic/apis/jentic-control-plane-api.md) · [All operations](https://skmtc.dev/jentic/apis/jentic-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/jentic/jentic-control-plane-api/revisions/bd463fcefb14/schema)
