# Search ## Search for tools or tool sets `client.Search.SearchToolsOrToolSets(ctx, query) (*SearchSearchToolsOrToolSetsResponse, error)` **get** `/v1/search/tools_or_tool_sets` Searches for tools or tool sets in the workspace ### Parameters - `query SearchSearchToolsOrToolSetsParams` - `Query param.Field[string]` ### Returns - `type SearchSearchToolsOrToolSetsResponse struct{…}` - `Agents []Agent` - `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 Time` 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 map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec AgentSpec` Agent specification (user-provided configuration) - `Status AgentSpecStatus` Status of the agent - `const AgentSpecStatusAgentStatusUnspecified AgentSpecStatus = "AGENT_STATUS_UNSPECIFIED"` - `const AgentSpecStatusAgentStatusDraft AgentSpecStatus = "AGENT_STATUS_DRAFT"` - `const AgentSpecStatusAgentStatusPublished AgentSpecStatus = "AGENT_STATUS_PUBLISHED"` - `const AgentSpecStatusAgentStatusArchived AgentSpecStatus = "AGENT_STATUS_ARCHIVED"` - `VariationSelectionMode AgentSpecVariationSelectionMode` Controls how variations are automatically selected when creating objectives Defaults to RANDOM when unspecified - `const AgentSpecVariationSelectionModeVariationSelectionModeUnspecified AgentSpecVariationSelectionMode = "VARIATION_SELECTION_MODE_UNSPECIFIED"` - `const AgentSpecVariationSelectionModeVariationSelectionModeRandom AgentSpecVariationSelectionMode = "VARIATION_SELECTION_MODE_RANDOM"` - `const AgentSpecVariationSelectionModeVariationSelectionModeWeighted AgentSpecVariationSelectionMode = "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 map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec ProfileSpec` ProfileSpec contains the profile-specific fields - `Type ProfileSpecType` Type is the type of profile. User's are humans, API keys are computers. You know the deal. - `const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"` - `const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"` - `const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "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 int64` - `Tools []Tool` - `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 ConfigHTTPRequestMethod` - `const ConfigHTTPRequestMethodGet ConfigHTTPRequestMethod = "GET"` - `const ConfigHTTPRequestMethodPost ConfigHTTPRequestMethod = "POST"` - `const ConfigHTTPRequestMethodPut ConfigHTTPRequestMethod = "PUT"` - `const ConfigHTTPRequestMethodPatch ConfigHTTPRequestMethod = "PATCH"` - `const ConfigHTTPRequestMethodDelete ConfigHTTPRequestMethod = "DELETE"` - `Headers map[string, string]` - `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 map[string, unknown]` - `Status ToolSpecStatus` - `const ToolSpecStatusToolStatusUnspecified ToolSpecStatus = "TOOL_STATUS_UNSPECIFIED"` - `const ToolSpecStatusToolStatusAvailable ToolSpecStatus = "TOOL_STATUS_AVAILABLE"` - `const ToolSpecStatusToolStatusFiltered ToolSpecStatus = "TOOL_STATUS_FILTERED"` - `const ToolSpecStatusToolStatusArchived ToolSpecStatus = "TOOL_STATUS_ARCHIVED"` - `RequiresApproval bool` - `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 []ToolSet` - `Metadata ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `Spec ToolSetSpec` - `Adapter ToolSetAdapter` - `HTTP ToolSetAdapterHTTP` - `BaseURL string` - `Headers map[string, string]` - `Mcp ToolSetAdapterMcp` - `ExcludeTools McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `Operator McpToolFilterOperator` - `const McpToolFilterOperatorOperatorUnspecified McpToolFilterOperator = "OPERATOR_UNSPECIFIED"` - `const McpToolFilterOperatorOperatorAnd McpToolFilterOperator = "OPERATOR_AND"` - `const McpToolFilterOperatorOperatorOr McpToolFilterOperator = "OPERATOR_OR"` - `Filters []McpToolFilterFilter` - `Attribute McpToolFilterFiltersAttribute` - `const McpToolFilterFiltersAttributeAttributeUnspecified McpToolFilterFiltersAttribute = "ATTRIBUTE_UNSPECIFIED"` - `const McpToolFilterFiltersAttributeAttributeName McpToolFilterFiltersAttribute = "ATTRIBUTE_NAME"` - `const McpToolFilterFiltersAttributeAttributeTitle McpToolFilterFiltersAttribute = "ATTRIBUTE_TITLE"` - `const McpToolFilterFiltersAttributeAttributeDescription McpToolFilterFiltersAttribute = "ATTRIBUTE_DESCRIPTION"` - `Matcher McpToolFilterFiltersMatcher` String matching operations - `CaseSensitive bool` - `Contains string` - `EndsWith string` - `Exact string` - `Regex string` - `StartsWith string` - `Headers map[string, string]` - `IncludeTools McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `ToolApprovals ToolSetAdapterMcpToolApprovals` Approval filters that will automatically set the approval requirement on the tools synced from the MCP server - `Always bool` - `Only McpToolFilter` Top-level filter with simple boolean logic (no nesting) - `URL string` - `Description string` - `Info ToolSetInfo` Tool set information - `AgentCount int64` - `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 Time` - `ToolCount int64` ### Example ```go package main import ( "context" "fmt" "github.com/cadenya/cadenya-go" "github.com/cadenya/cadenya-go/option" ) func main() { client := cadenya.NewClient( option.WithAPIKey("My API Key"), ) response, err := client.Search.SearchToolsOrToolSets(context.TODO(), cadenya.SearchSearchToolsOrToolSetsParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } } ] } ```