Skip to content

Toolkits

Toolkits group related tools into bundles with shared configuration — a database toolkit that wires up schema-aware query tools, an AWS toolkit with pre-configured credentials, a code-review toolkit with linting and security scanning tools. Instead of registering tools individually, you configure once and expose them as a cohesive package.

Overview

Toolkits are bundled collections of tools with shared configuration and schemas. While tools are individual operations, toolkits group related tools together and provide a configuration interface.

Protocol Messages (4 types)

Type StringModelDirection
toolkit/list/reqToolkitListRequestAgent → Host
toolkit/list/respToolkitListResponseHost → Agent
toolkit/configure/reqToolkitConfigureRequestAgent → Host
toolkit/configure/respToolkitConfigureResponseHost → Agent

ToolkitDefinition

FieldTypeDescription
namestrUnique toolkit name
aliasstrDisplay alias
descriptionstrWhat the toolkit provides
categorystrClassification
tagslist[str]Search tags
icon_svgstrSVG icon
schemadictConfiguration JSON Schema
toolslist[str]Tool names included
configuredboolWhether toolkit is configured
versionstrToolkit version

ToolkitConfigureRequest

FieldTypeDescription
session_idstrSession identifier
toolkit_namestrToolkit to configure
configdictConfiguration values matching schema

ToolkitConfigureResponse

FieldTypeDescription
toolkit_namestrConfigured toolkit name
statusstrConfiguration result status
messagestrHuman-readable message

ToolkitPlugin ABC

python
class ToolkitPlugin(A2EPlugin):
    name = "toolkit_plugin"

    @abstractmethod
    def _list_toolkits(self, msg) -> list[ToolkitDefinition]: ...

    @abstractmethod
    def _configure_toolkit(self, msg) -> ToolkitConfigureResponse: ...

    # Push support
    def set_push_callback(self, cb): ...
    def emit_event(self, ...): ...

ToolkitAPI (Client)

python
from a2e.caps.toolkits.client import ToolkitAPI

toolkits = ToolkitAPI(client)

# List available toolkits
kit_list = toolkits.list(filter_kind=None, filter_tags=None)

# Configure a toolkit
kit = toolkits.configure("filesystem", schema={"root": "/data"})

# Idempotent: configure only if not already configured
kit = toolkits.ensure("filesystem", schema={"root": "/data"})

# Find by name
kit = toolkits.get("filesystem")  # Returns ToolkitDefinition or None

Convenience Methods

MethodDescription
ensure(name, schema, timeout)Idempotent configure — checks if already configured first
get(name, timeout)Find toolkit by name from list

A2E Protocol v1.0 — Released under the MIT License.