Skip to content
Get started

Archive a tool set

POST/v1/workspaces/{workspaceId}/tool_sets/{id}:archive

Transitions a tool set to STATE_ARCHIVED. Syncing stops, the tool set is hidden from list results, its tools are no longer offered to objectives, and new variation assignments are rejected. Existing assignments are retained, and history is preserved — unlike delete, archiving works while the tool set is still assigned to agent variations.

Path ParametersExpand Collapse
workspaceId: string
id: string
ReturnsExpand Collapse
ToolSet object { metadata, spec, state, info }
metadata: ResourceMetadata { id, accountId, createdAt, 7 more }

Standard metadata for persistent, named resources (e.g., agents, tools, prompts)

id: string

Unique identifier for the resource (prefixed ULID, e.g., “agent_01HXK…”)

accountId: string

Account this resource belongs to for multi-tenant isolation (prefixed ULID)

createdAt: string

Timestamp when this resource was created

formatdate-time
name: string

Human-readable name for the resource (e.g., “Customer Support Agent”, “Email Tool”) Required for resources that users interact with directly

profileId: string

ID of the actor (user or service account) that created this resource

workspaceId: string

Workspace this resource belongs to for organizational grouping (prefixed ULID)

bundleKey: optional string

Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply.

externalId: optional string

External ID for the resource (e.g., a workflow ID from an external system)

labels: optional map[string]

Arbitrary key-value pairs for categorization and filtering Examples: {“environment”: “production”, “team”: “platform”, “version”: “v2”}

updatedAt: optional string

Timestamp when this resource was last updated

formatdate-time
spec: ToolSetSpec { adapter, description }
adapter: optional ToolSetAdapter { http, mcp, openapi }
http: optional ToolSetAdapterHTTP { baseUrl, headers }
baseUrl: optional string
headers: optional map[string]
mcp: optional ToolSetAdapterMcp { excludeTools, headers, includeTools, 2 more }
excludeTools: optional ToolFilter { operator, filters }

Top-level filter with simple boolean logic (no nesting)

operator: "OPERATOR_UNSPECIFIED" or "OPERATOR_AND" or "OPERATOR_OR"
formatenum
One of the following:
"OPERATOR_UNSPECIFIED"
"OPERATOR_AND"
"OPERATOR_OR"
filters: optional array of AttributeFilter { attribute, matcher }
attribute: "ATTRIBUTE_UNSPECIFIED" or "ATTRIBUTE_NAME" or "ATTRIBUTE_TITLE" or "ATTRIBUTE_DESCRIPTION"
formatenum
One of the following:
"ATTRIBUTE_UNSPECIFIED"
"ATTRIBUTE_NAME"
"ATTRIBUTE_TITLE"
"ATTRIBUTE_DESCRIPTION"
matcher: optional StringMatcher { caseSensitive, contains, endsWith, 3 more }

String matching operations

caseSensitive: optional boolean
contains: optional string
endsWith: optional string
exact: optional string
regex: optional string
startsWith: optional string
headers: optional map[string]
includeTools: optional ToolFilter { operator, filters }

Top-level filter with simple boolean logic (no nesting)

operator: "OPERATOR_UNSPECIFIED" or "OPERATOR_AND" or "OPERATOR_OR"
formatenum
One of the following:
"OPERATOR_UNSPECIFIED"
"OPERATOR_AND"
"OPERATOR_OR"
filters: optional array of AttributeFilter { attribute, matcher }
attribute: "ATTRIBUTE_UNSPECIFIED" or "ATTRIBUTE_NAME" or "ATTRIBUTE_TITLE" or "ATTRIBUTE_DESCRIPTION"
formatenum
One of the following:
"ATTRIBUTE_UNSPECIFIED"
"ATTRIBUTE_NAME"
"ATTRIBUTE_TITLE"
"ATTRIBUTE_DESCRIPTION"
matcher: optional StringMatcher { caseSensitive, contains, endsWith, 3 more }

String matching operations

caseSensitive: optional boolean
contains: optional string
endsWith: optional string
exact: optional string
regex: optional string
startsWith: optional string
toolApprovals: optional ApprovalRequirementFilter { always, only }

Approval filters that will automatically set the approval requirement on tools synced from an external source

always: optional boolean
only: optional ToolFilter { operator, filters }

Top-level filter with simple boolean logic (no nesting)

operator: "OPERATOR_UNSPECIFIED" or "OPERATOR_AND" or "OPERATOR_OR"
formatenum
One of the following:
"OPERATOR_UNSPECIFIED"
"OPERATOR_AND"
"OPERATOR_OR"
filters: optional array of AttributeFilter { attribute, matcher }
attribute: "ATTRIBUTE_UNSPECIFIED" or "ATTRIBUTE_NAME" or "ATTRIBUTE_TITLE" or "ATTRIBUTE_DESCRIPTION"
formatenum
One of the following:
"ATTRIBUTE_UNSPECIFIED"
"ATTRIBUTE_NAME"
"ATTRIBUTE_TITLE"
"ATTRIBUTE_DESCRIPTION"
matcher: optional StringMatcher { caseSensitive, contains, endsWith, 3 more }

String matching operations

caseSensitive: optional boolean
contains: optional string
endsWith: optional string
exact: optional string
regex: optional string
startsWith: optional string
url: optional string
openapi: optional ToolSetAdapterOpenAPI { baseUrl, excludeTools, headers, 5 more }
baseUrl: optional string

Base URL for dispatching tool calls. If set, overrides the server resolved from the spec’s servers array.

excludeTools: optional ToolFilter { operator, filters }

Top-level filter with simple boolean logic (no nesting)

operator: "OPERATOR_UNSPECIFIED" or "OPERATOR_AND" or "OPERATOR_OR"
formatenum
One of the following:
"OPERATOR_UNSPECIFIED"
"OPERATOR_AND"
"OPERATOR_OR"
filters: optional array of AttributeFilter { attribute, matcher }
attribute: "ATTRIBUTE_UNSPECIFIED" or "ATTRIBUTE_NAME" or "ATTRIBUTE_TITLE" or "ATTRIBUTE_DESCRIPTION"
formatenum
One of the following:
"ATTRIBUTE_UNSPECIFIED"
"ATTRIBUTE_NAME"
"ATTRIBUTE_TITLE"
"ATTRIBUTE_DESCRIPTION"
matcher: optional StringMatcher { caseSensitive, contains, endsWith, 3 more }

String matching operations

caseSensitive: optional boolean
contains: optional string
endsWith: optional string
exact: optional string
regex: optional string
startsWith: optional string
headers: optional map[string]

Headers sent when fetching the spec from a URL and when dispatching tool calls.

includeTools: optional ToolFilter { operator, filters }

Top-level filter with simple boolean logic (no nesting)

operator: "OPERATOR_UNSPECIFIED" or "OPERATOR_AND" or "OPERATOR_OR"
formatenum
One of the following:
"OPERATOR_UNSPECIFIED"
"OPERATOR_AND"
"OPERATOR_OR"
filters: optional array of AttributeFilter { attribute, matcher }
attribute: "ATTRIBUTE_UNSPECIFIED" or "ATTRIBUTE_NAME" or "ATTRIBUTE_TITLE" or "ATTRIBUTE_DESCRIPTION"
formatenum
One of the following:
"ATTRIBUTE_UNSPECIFIED"
"ATTRIBUTE_NAME"
"ATTRIBUTE_TITLE"
"ATTRIBUTE_DESCRIPTION"
matcher: optional StringMatcher { caseSensitive, contains, endsWith, 3 more }

String matching operations

caseSensitive: optional boolean
contains: optional string
endsWith: optional string
exact: optional string
regex: optional string
startsWith: optional string
serverName: optional string

Name of the server entry in the spec’s servers array (OpenAPI 3.2 server.name field). Used to select which server URL to dispatch to when base_url is not set. If unset, the first server is used. Ignored when base_url is set.

toolApprovals: optional ApprovalRequirementFilter { always, only }

Approval filters that will automatically set the approval requirement on tools synced from an external source

always: optional boolean
only: optional ToolFilter { operator, filters }

Top-level filter with simple boolean logic (no nesting)

operator: "OPERATOR_UNSPECIFIED" or "OPERATOR_AND" or "OPERATOR_OR"
formatenum
One of the following:
"OPERATOR_UNSPECIFIED"
"OPERATOR_AND"
"OPERATOR_OR"
filters: optional array of AttributeFilter { attribute, matcher }
attribute: "ATTRIBUTE_UNSPECIFIED" or "ATTRIBUTE_NAME" or "ATTRIBUTE_TITLE" or "ATTRIBUTE_DESCRIPTION"
formatenum
One of the following:
"ATTRIBUTE_UNSPECIFIED"
"ATTRIBUTE_NAME"
"ATTRIBUTE_TITLE"
"ATTRIBUTE_DESCRIPTION"
matcher: optional StringMatcher { caseSensitive, contains, endsWith, 3 more }

String matching operations

caseSensitive: optional boolean
contains: optional string
endsWith: optional string
exact: optional string
regex: optional string
startsWith: optional string
uploadId: optional string

ID of a COMPLETE Upload containing the OpenAPI spec document.

url: optional string

URL to fetch the OpenAPI spec from. Synced automatically every hour.

description: optional string
state: "STATE_UNSPECIFIED" or "STATE_ACTIVE" or "STATE_ARCHIVED"

The current lifecycle state of the tool set. Output only. Tool sets are created STATE_ACTIVE; use the :archive and :unarchive actions to transition between states.

formatenum
One of the following:
"STATE_UNSPECIFIED"
"STATE_ACTIVE"
"STATE_ARCHIVED"
info: optional ToolSetInfo { agentCount, createdBy, lastSync, toolCount }

Tool set information

agentCount: optional number
createdBy: optional Profile { metadata, spec }

A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces.

metadata: AccountResourceMetadata { id, accountId, name, 3 more }

AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace.

id: string

Unique identifier for the resource (prefixed ULID, e.g., “apikey_01HXK…”)

accountId: string

Account this resource belongs to for multi-tenant isolation (prefixed ULID)

name: string

Human-readable name for the resource (e.g., “Customer Support Agent”, “Email Tool”) Required for resources that users interact with directly

profileId: string
externalId: optional string

External ID for the resource (e.g., a workflow ID from an external system)

labels: optional map[string]

Arbitrary key-value pairs for categorization and filtering Examples: {“environment”: “production”, “team”: “platform”, “version”: “v2”}

spec: ProfileSpec { type, email, name }

Configuration for a profile.

type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"

Whether this profile represents a human user, an API key, or a system principal.

formatenum
One of the following:
"PROFILE_TYPE_UNSPECIFIED"
"PROFILE_TYPE_USER"
"PROFILE_TYPE_API_KEY"
"PROFILE_TYPE_SYSTEM"
email: optional string

Email address of the profile. Required and unique within an account for user profiles.

name: optional string

Display name (e.g., “Bobby Tables”).

lastSync: optional string
toolCount: optional number

Archive a tool set

curl https://api.cadenya.com/v1/workspaces/$WORKSPACE_ID/tool_sets/$ID:archive \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $CADENYA_API_KEY" \
    -d '{}'
{
  "metadata": {
    "id": "id",
    "accountId": "accountId",
    "createdAt": "2019-12-27T18:11:19.117Z",
    "name": "name",
    "profileId": "profileId",
    "workspaceId": "workspaceId",
    "bundleKey": "bundleKey",
    "externalId": "externalId",
    "labels": {
      "foo": "string"
    },
    "updatedAt": "2019-12-27T18:11:19.117Z"
  },
  "spec": {
    "adapter": {
      "http": {
        "baseUrl": "baseUrl",
        "headers": {
          "foo": "string"
        }
      },
      "mcp": {
        "excludeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "headers": {
          "foo": "string"
        },
        "includeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "toolApprovals": {
          "always": true,
          "only": {
            "operator": "OPERATOR_UNSPECIFIED",
            "filters": [
              {
                "attribute": "ATTRIBUTE_UNSPECIFIED",
                "matcher": {
                  "caseSensitive": true,
                  "contains": "contains",
                  "endsWith": "endsWith",
                  "exact": "exact",
                  "regex": "regex",
                  "startsWith": "startsWith"
                }
              }
            ]
          }
        },
        "url": "url"
      },
      "openapi": {
        "baseUrl": "baseUrl",
        "excludeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "headers": {
          "foo": "string"
        },
        "includeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "serverName": "serverName",
        "toolApprovals": {
          "always": true,
          "only": {
            "operator": "OPERATOR_UNSPECIFIED",
            "filters": [
              {
                "attribute": "ATTRIBUTE_UNSPECIFIED",
                "matcher": {
                  "caseSensitive": true,
                  "contains": "contains",
                  "endsWith": "endsWith",
                  "exact": "exact",
                  "regex": "regex",
                  "startsWith": "startsWith"
                }
              }
            ]
          }
        },
        "uploadId": "uploadId",
        "url": "url"
      }
    },
    "description": "description"
  },
  "state": "STATE_UNSPECIFIED",
  "info": {
    "agentCount": 0,
    "createdBy": {
      "metadata": {
        "id": "id",
        "accountId": "accountId",
        "name": "name",
        "profileId": "profileId",
        "externalId": "externalId",
        "labels": {
          "foo": "string"
        }
      },
      "spec": {
        "type": "PROFILE_TYPE_UNSPECIFIED",
        "email": "email",
        "name": "name"
      }
    },
    "lastSync": "2019-12-27T18:11:19.117Z",
    "toolCount": 0
  }
}
Returns Examples
{
  "metadata": {
    "id": "id",
    "accountId": "accountId",
    "createdAt": "2019-12-27T18:11:19.117Z",
    "name": "name",
    "profileId": "profileId",
    "workspaceId": "workspaceId",
    "bundleKey": "bundleKey",
    "externalId": "externalId",
    "labels": {
      "foo": "string"
    },
    "updatedAt": "2019-12-27T18:11:19.117Z"
  },
  "spec": {
    "adapter": {
      "http": {
        "baseUrl": "baseUrl",
        "headers": {
          "foo": "string"
        }
      },
      "mcp": {
        "excludeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "headers": {
          "foo": "string"
        },
        "includeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "toolApprovals": {
          "always": true,
          "only": {
            "operator": "OPERATOR_UNSPECIFIED",
            "filters": [
              {
                "attribute": "ATTRIBUTE_UNSPECIFIED",
                "matcher": {
                  "caseSensitive": true,
                  "contains": "contains",
                  "endsWith": "endsWith",
                  "exact": "exact",
                  "regex": "regex",
                  "startsWith": "startsWith"
                }
              }
            ]
          }
        },
        "url": "url"
      },
      "openapi": {
        "baseUrl": "baseUrl",
        "excludeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "headers": {
          "foo": "string"
        },
        "includeTools": {
          "operator": "OPERATOR_UNSPECIFIED",
          "filters": [
            {
              "attribute": "ATTRIBUTE_UNSPECIFIED",
              "matcher": {
                "caseSensitive": true,
                "contains": "contains",
                "endsWith": "endsWith",
                "exact": "exact",
                "regex": "regex",
                "startsWith": "startsWith"
              }
            }
          ]
        },
        "serverName": "serverName",
        "toolApprovals": {
          "always": true,
          "only": {
            "operator": "OPERATOR_UNSPECIFIED",
            "filters": [
              {
                "attribute": "ATTRIBUTE_UNSPECIFIED",
                "matcher": {
                  "caseSensitive": true,
                  "contains": "contains",
                  "endsWith": "endsWith",
                  "exact": "exact",
                  "regex": "regex",
                  "startsWith": "startsWith"
                }
              }
            ]
          }
        },
        "uploadId": "uploadId",
        "url": "url"
      }
    },
    "description": "description"
  },
  "state": "STATE_UNSPECIFIED",
  "info": {
    "agentCount": 0,
    "createdBy": {
      "metadata": {
        "id": "id",
        "accountId": "accountId",
        "name": "name",
        "profileId": "profileId",
        "externalId": "externalId",
        "labels": {
          "foo": "string"
        }
      },
      "spec": {
        "type": "PROFILE_TYPE_UNSPECIFIED",
        "email": "email",
        "name": "name"
      }
    },
    "lastSync": "2019-12-27T18:11:19.117Z",
    "toolCount": 0
  }
}