# Search ## Search for tools or tool sets `client.search.searchToolsOrToolSets(SearchSearchToolsOrToolSetsParamsquery?, RequestOptionsoptions?): SearchSearchToolsOrToolSetsResponse` **get** `/v1/search/tools_or_tool_sets` Searches for tools or tool sets in the workspace ### Parameters - `query: SearchSearchToolsOrToolSetsParams` - `query?: string` ### Returns - `SearchSearchToolsOrToolSetsResponse` - `agents?: Array` - `metadata: ResourceMetadata` 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 - `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) - `externalId?: string` External ID for the resource (e.g., a workflow ID from an external system) - `labels?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentSpec` Agent specification (user-provided configuration) - `status: "AGENT_STATUS_UNSPECIFIED" | "AGENT_STATUS_DRAFT" | "AGENT_STATUS_PUBLISHED" | "AGENT_STATUS_ARCHIVED"` Status of the agent - `"AGENT_STATUS_UNSPECIFIED"` - `"AGENT_STATUS_DRAFT"` - `"AGENT_STATUS_PUBLISHED"` - `"AGENT_STATUS_ARCHIVED"` - `variationSelectionMode: "VARIATION_SELECTION_MODE_UNSPECIFIED" | "VARIATION_SELECTION_MODE_RANDOM" | "VARIATION_SELECTION_MODE_WEIGHTED"` Controls how variations are automatically selected when creating objectives Defaults to RANDOM when unspecified - `"VARIATION_SELECTION_MODE_UNSPECIFIED"` - `"VARIATION_SELECTION_MODE_RANDOM"` - `"VARIATION_SELECTION_MODE_WEIGHTED"` - `description?: string` Description of the agent's purpose - `webhookEventsUrl?: string` The URL that Cadenya will send events for any objective assigned to the agent. - `info?: AgentInfo` AgentInfo contains simple information about an agent for display or quick reference - `createdBy?: Profile` Profile represents a human user at the account level. Profiles are account-scoped resources that can be associated with multiple workspaces through the Actor model. Authentication for profiles is handled via SSO/OAuth (WorkOS). - `metadata: AccountResourceMetadata` 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?: string` External ID for the resource (e.g., a workflow ID from an external system) - `labels?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` ProfileSpec contains the profile-specific fields - `type: "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Type is the type of profile. User's are humans, API keys are computers. You know the deal. - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email?: string` Email address of the user (required, unique per account) - `name?: string` Display name for the user (e.g., "Bobby Tables") - `variationCount?: number` - `tools?: Array` - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `spec: ToolSpec` - `config: ToolSpecConfig` Config defines the adapter to use for the tool. This is used to determine how the tool is called. For example, if the tool is an HTTP tool, the adapter will be Http. If the tool is an inline tool, the adapter will be Inline. - `http?: ConfigHTTP` - `requestMethod: "GET" | "POST" | "PUT" | 2 more` - `"GET"` - `"POST"` - `"PUT"` - `"PATCH"` - `"DELETE"` - `headers?: Record` - `path?: string` - `query?: string` - `requestBodyContentType?: string` - `requestBodyTemplate?: string` These are only used when the request method is a POST, PUT, or PATCH - `toolName?: string` The tool name (commonly an "operation id" in OpenAPI specs) to call on the HTTP adapter. This is used to match the tool spec to the correct endpoint on the HTTP adapter. it will be derived from the name of the tool if not provided. - `mcp?: ConfigMcp` - `toolDescription?: string` - `toolName?: string` - `toolTitle?: string` - `description: string` - `parameters: Record` - `status: "TOOL_STATUS_UNSPECIFIED" | "TOOL_STATUS_AVAILABLE" | "TOOL_STATUS_FILTERED" | "TOOL_STATUS_ARCHIVED"` - `"TOOL_STATUS_UNSPECIFIED"` - `"TOOL_STATUS_AVAILABLE"` - `"TOOL_STATUS_FILTERED"` - `"TOOL_STATUS_ARCHIVED"` - `requiresApproval?: boolean` - `info?: ToolInfo` - `createdBy?: Profile` Profile represents a human user at the account level. Profiles are account-scoped resources that can be associated with multiple workspaces through the Actor model. Authentication for profiles is handled via SSO/OAuth (WorkOS). - `toolSet?: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `toolSets?: Array` - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `spec: ToolSetSpec` - `adapter?: ToolSetAdapter` - `http?: ToolSetAdapterHTTP` - `baseUrl?: string` - `headers?: Record` - `mcp?: ToolSetAdapterMcp` - `excludeTools?: McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `operator: "OPERATOR_UNSPECIFIED" | "OPERATOR_AND" | "OPERATOR_OR"` - `"OPERATOR_UNSPECIFIED"` - `"OPERATOR_AND"` - `"OPERATOR_OR"` - `filters?: Array` - `attribute: "ATTRIBUTE_UNSPECIFIED" | "ATTRIBUTE_NAME" | "ATTRIBUTE_TITLE" | "ATTRIBUTE_DESCRIPTION"` - `"ATTRIBUTE_UNSPECIFIED"` - `"ATTRIBUTE_NAME"` - `"ATTRIBUTE_TITLE"` - `"ATTRIBUTE_DESCRIPTION"` - `matcher?: Matcher` String matching operations - `caseSensitive?: boolean` - `contains?: string` - `endsWith?: string` - `exact?: string` - `regex?: string` - `startsWith?: string` - `headers?: Record` - `includeTools?: McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `toolApprovals?: ToolApprovals` Approval filters that will automatically set the approval requirement on the tools synced from the MCP server - `always?: boolean` - `only?: McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `url?: string` - `description?: string` - `info?: ToolSetInfo` Tool set information - `agentCount?: number` - `createdBy?: Profile` Profile represents a human user at the account level. Profiles are account-scoped resources that can be associated with multiple workspaces through the Actor model. Authentication for profiles is handled via SSO/OAuth (WorkOS). - `lastSync?: string` - `toolCount?: number` ### Example ```typescript import Cadenya from '@cadenya/cadenya'; const client = new Cadenya({ apiKey: process.env['CADENYA_API_KEY'], // This is the default and can be omitted }); const response = await client.search.searchToolsOrToolSets(); console.log(response.agents); ``` #### Response ```json { "agents": [ { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "status": "AGENT_STATUS_UNSPECIFIED", "variationSelectionMode": "VARIATION_SELECTION_MODE_UNSPECIFIED", "description": "description", "webhookEventsUrl": "webhookEventsUrl" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_USER", "email": "email", "name": "name" } }, "variationCount": 0 } } ], "tools": [ { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "config": { "http": { "requestMethod": "GET", "headers": { "foo": "string" }, "path": "path", "query": "query", "requestBodyContentType": "requestBodyContentType", "requestBodyTemplate": "requestBodyTemplate", "toolName": "toolName" }, "mcp": { "toolDescription": "toolDescription", "toolName": "toolName", "toolTitle": "toolTitle" } }, "description": "description", "parameters": { "foo": "bar" }, "status": "TOOL_STATUS_UNSPECIFIED", "requiresApproval": true }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_USER", "email": "email", "name": "name" } }, "toolSet": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "externalId": "externalId", "labels": { "foo": "string" } } } } ], "toolSets": [ { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "externalId": "externalId", "labels": { "foo": "string" } }, "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" } }, "description": "description" }, "info": { "agentCount": 0, "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_USER", "email": "email", "name": "name" } }, "lastSync": "2019-12-27T18:11:19.117Z", "toolCount": 0 } } ] } ``` ## Domain Types ### Search Search Tools Or Tool Sets Response - `SearchSearchToolsOrToolSetsResponse` - `agents?: Array` - `metadata: ResourceMetadata` 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 - `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) - `externalId?: string` External ID for the resource (e.g., a workflow ID from an external system) - `labels?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentSpec` Agent specification (user-provided configuration) - `status: "AGENT_STATUS_UNSPECIFIED" | "AGENT_STATUS_DRAFT" | "AGENT_STATUS_PUBLISHED" | "AGENT_STATUS_ARCHIVED"` Status of the agent - `"AGENT_STATUS_UNSPECIFIED"` - `"AGENT_STATUS_DRAFT"` - `"AGENT_STATUS_PUBLISHED"` - `"AGENT_STATUS_ARCHIVED"` - `variationSelectionMode: "VARIATION_SELECTION_MODE_UNSPECIFIED" | "VARIATION_SELECTION_MODE_RANDOM" | "VARIATION_SELECTION_MODE_WEIGHTED"` Controls how variations are automatically selected when creating objectives Defaults to RANDOM when unspecified - `"VARIATION_SELECTION_MODE_UNSPECIFIED"` - `"VARIATION_SELECTION_MODE_RANDOM"` - `"VARIATION_SELECTION_MODE_WEIGHTED"` - `description?: string` Description of the agent's purpose - `webhookEventsUrl?: string` The URL that Cadenya will send events for any objective assigned to the agent. - `info?: AgentInfo` AgentInfo contains simple information about an agent for display or quick reference - `createdBy?: Profile` Profile represents a human user at the account level. Profiles are account-scoped resources that can be associated with multiple workspaces through the Actor model. Authentication for profiles is handled via SSO/OAuth (WorkOS). - `metadata: AccountResourceMetadata` 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?: string` External ID for the resource (e.g., a workflow ID from an external system) - `labels?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` ProfileSpec contains the profile-specific fields - `type: "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Type is the type of profile. User's are humans, API keys are computers. You know the deal. - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email?: string` Email address of the user (required, unique per account) - `name?: string` Display name for the user (e.g., "Bobby Tables") - `variationCount?: number` - `tools?: Array` - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `spec: ToolSpec` - `config: ToolSpecConfig` Config defines the adapter to use for the tool. This is used to determine how the tool is called. For example, if the tool is an HTTP tool, the adapter will be Http. If the tool is an inline tool, the adapter will be Inline. - `http?: ConfigHTTP` - `requestMethod: "GET" | "POST" | "PUT" | 2 more` - `"GET"` - `"POST"` - `"PUT"` - `"PATCH"` - `"DELETE"` - `headers?: Record` - `path?: string` - `query?: string` - `requestBodyContentType?: string` - `requestBodyTemplate?: string` These are only used when the request method is a POST, PUT, or PATCH - `toolName?: string` The tool name (commonly an "operation id" in OpenAPI specs) to call on the HTTP adapter. This is used to match the tool spec to the correct endpoint on the HTTP adapter. it will be derived from the name of the tool if not provided. - `mcp?: ConfigMcp` - `toolDescription?: string` - `toolName?: string` - `toolTitle?: string` - `description: string` - `parameters: Record` - `status: "TOOL_STATUS_UNSPECIFIED" | "TOOL_STATUS_AVAILABLE" | "TOOL_STATUS_FILTERED" | "TOOL_STATUS_ARCHIVED"` - `"TOOL_STATUS_UNSPECIFIED"` - `"TOOL_STATUS_AVAILABLE"` - `"TOOL_STATUS_FILTERED"` - `"TOOL_STATUS_ARCHIVED"` - `requiresApproval?: boolean` - `info?: ToolInfo` - `createdBy?: Profile` Profile represents a human user at the account level. Profiles are account-scoped resources that can be associated with multiple workspaces through the Actor model. Authentication for profiles is handled via SSO/OAuth (WorkOS). - `toolSet?: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `toolSets?: Array` - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `spec: ToolSetSpec` - `adapter?: ToolSetAdapter` - `http?: ToolSetAdapterHTTP` - `baseUrl?: string` - `headers?: Record` - `mcp?: ToolSetAdapterMcp` - `excludeTools?: McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `operator: "OPERATOR_UNSPECIFIED" | "OPERATOR_AND" | "OPERATOR_OR"` - `"OPERATOR_UNSPECIFIED"` - `"OPERATOR_AND"` - `"OPERATOR_OR"` - `filters?: Array` - `attribute: "ATTRIBUTE_UNSPECIFIED" | "ATTRIBUTE_NAME" | "ATTRIBUTE_TITLE" | "ATTRIBUTE_DESCRIPTION"` - `"ATTRIBUTE_UNSPECIFIED"` - `"ATTRIBUTE_NAME"` - `"ATTRIBUTE_TITLE"` - `"ATTRIBUTE_DESCRIPTION"` - `matcher?: Matcher` String matching operations - `caseSensitive?: boolean` - `contains?: string` - `endsWith?: string` - `exact?: string` - `regex?: string` - `startsWith?: string` - `headers?: Record` - `includeTools?: McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `toolApprovals?: ToolApprovals` Approval filters that will automatically set the approval requirement on the tools synced from the MCP server - `always?: boolean` - `only?: McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `url?: string` - `description?: string` - `info?: ToolSetInfo` Tool set information - `agentCount?: number` - `createdBy?: Profile` Profile represents a human user at the account level. Profiles are account-scoped resources that can be associated with multiple workspaces through the Actor model. Authentication for profiles is handled via SSO/OAuth (WorkOS). - `lastSync?: string` - `toolCount?: number`