Skip to content
Get started

Tools

ToolService manages tool sets and tools at the WORKSPACE level. Tool sets group related tools, and tools define specific capabilities for agents. All operations are implicitly scoped to the workspace determined by the JWT token.

Note: When a ToolSet has managed=true, only API Key actors can modify its tools. Profile actors (humans) are restricted from modifying managed tool sets.

Authentication: Bearer token (JWT) Scope: Workspace-level operations

List tools
client.ToolSets.Tools.List(ctx, toolSetID, query) (*CursorPagination[Tool], error)
GET/v1/tool_sets/{toolSetId}/tools
Create a new tool
client.ToolSets.Tools.New(ctx, toolSetID, body) (*Tool, error)
POST/v1/tool_sets/{toolSetId}/tools
Get a tool by ID
client.ToolSets.Tools.Get(ctx, toolSetID, id) (*Tool, error)
GET/v1/tool_sets/{toolSetId}/tools/{id}
Update a tool
client.ToolSets.Tools.Update(ctx, toolSetID, id, body) (*Tool, error)
PUT/v1/tool_sets/{toolSetId}/tools/{id}
Delete a tool
client.ToolSets.Tools.Delete(ctx, toolSetID, id) error
DELETE/v1/tool_sets/{toolSetId}/tools/{id}
ModelsExpand Collapse
type ConfigHTTP struct{…}
RequestMethod ConfigHTTPRequestMethod
formatenum
One of the following:
const ConfigHTTPRequestMethodGet ConfigHTTPRequestMethod = "GET"
const ConfigHTTPRequestMethodPost ConfigHTTPRequestMethod = "POST"
const ConfigHTTPRequestMethodPut ConfigHTTPRequestMethod = "PUT"
const ConfigHTTPRequestMethodPatch ConfigHTTPRequestMethod = "PATCH"
const ConfigHTTPRequestMethodDelete ConfigHTTPRequestMethod = "DELETE"
Headers map[string, string]optional
Path stringoptional
Query stringoptional
RequestBodyContentType stringoptional
RequestBodyTemplate stringoptional

These are only used when the request method is a POST, PUT, or PATCH

ToolName stringoptional

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.

type ConfigMcp struct{…}
ToolDescription stringoptional
ToolName stringoptional
ToolTitle stringoptional
type Tool struct{…}

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

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)

ExternalID stringoptional

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

Labels map[string, string]optional

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

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 ConfigHTTPoptional
RequestMethod ConfigHTTPRequestMethod
formatenum
One of the following:
const ConfigHTTPRequestMethodGet ConfigHTTPRequestMethod = "GET"
const ConfigHTTPRequestMethodPost ConfigHTTPRequestMethod = "POST"
const ConfigHTTPRequestMethodPut ConfigHTTPRequestMethod = "PUT"
const ConfigHTTPRequestMethodPatch ConfigHTTPRequestMethod = "PATCH"
const ConfigHTTPRequestMethodDelete ConfigHTTPRequestMethod = "DELETE"
Headers map[string, string]optional
Path stringoptional
Query stringoptional
RequestBodyContentType stringoptional
RequestBodyTemplate stringoptional

These are only used when the request method is a POST, PUT, or PATCH

ToolName stringoptional

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 ConfigMcpoptional
ToolDescription stringoptional
ToolName stringoptional
ToolTitle stringoptional
Description string
Parameters map[string, unknown]
Status ToolSpecStatus
formatenum
One of the following:
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 booloptional
Info ToolInfooptional
CreatedBy Profileoptional

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).

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 stringoptional

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

Labels map[string, string]optional

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

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.

formatenum
One of the following:
const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"
const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"
const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"
Email stringoptional

Email address of the user (required, unique per account)

Name stringoptional

Display name for the user (e.g., "Bobby Tables")

ToolSet ResourceMetadataoptional

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

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)

ExternalID stringoptional

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

Labels map[string, string]optional

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

type ToolInfo struct{…}
CreatedBy Profileoptional

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).

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 stringoptional

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

Labels map[string, string]optional

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

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.

formatenum
One of the following:
const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"
const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"
const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"
Email stringoptional

Email address of the user (required, unique per account)

Name stringoptional

Display name for the user (e.g., "Bobby Tables")

ToolSet ResourceMetadataoptional

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

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)

ExternalID stringoptional

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

Labels map[string, string]optional

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

type ToolSpec struct{…}

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 ConfigHTTPoptional
RequestMethod ConfigHTTPRequestMethod
formatenum
One of the following:
const ConfigHTTPRequestMethodGet ConfigHTTPRequestMethod = "GET"
const ConfigHTTPRequestMethodPost ConfigHTTPRequestMethod = "POST"
const ConfigHTTPRequestMethodPut ConfigHTTPRequestMethod = "PUT"
const ConfigHTTPRequestMethodPatch ConfigHTTPRequestMethod = "PATCH"
const ConfigHTTPRequestMethodDelete ConfigHTTPRequestMethod = "DELETE"
Headers map[string, string]optional
Path stringoptional
Query stringoptional
RequestBodyContentType stringoptional
RequestBodyTemplate stringoptional

These are only used when the request method is a POST, PUT, or PATCH

ToolName stringoptional

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 ConfigMcpoptional
ToolDescription stringoptional
ToolName stringoptional
ToolTitle stringoptional
Description string
Parameters map[string, unknown]
Status ToolSpecStatus
formatenum
One of the following:
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 booloptional
type ToolSpecConfig struct{…}

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 ConfigHTTPoptional
RequestMethod ConfigHTTPRequestMethod
formatenum
One of the following:
const ConfigHTTPRequestMethodGet ConfigHTTPRequestMethod = "GET"
const ConfigHTTPRequestMethodPost ConfigHTTPRequestMethod = "POST"
const ConfigHTTPRequestMethodPut ConfigHTTPRequestMethod = "PUT"
const ConfigHTTPRequestMethodPatch ConfigHTTPRequestMethod = "PATCH"
const ConfigHTTPRequestMethodDelete ConfigHTTPRequestMethod = "DELETE"
Headers map[string, string]optional
Path stringoptional
Query stringoptional
RequestBodyContentType stringoptional
RequestBodyTemplate stringoptional

These are only used when the request method is a POST, PUT, or PATCH

ToolName stringoptional

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 ConfigMcpoptional
ToolDescription stringoptional
ToolName stringoptional
ToolTitle stringoptional