Registry for managing and discovering AI agent tools.

Provides centralized management of tools that agents can use, including registration, discovery, and metadata management.

const registry = new InMemoryToolRegistry();

// Register a tool
await registry.register(new SearchKnowledgeBaseTool(), {
category: 'knowledge',
tags: ['search', 'documentation'],
version: '1.0.0'
});

// Get tool by name
const tool = await registry.get('search_knowledge_base');

// Search for tools
const results = await registry.search({
query: 'search',
category: 'knowledge'
});

// List all available tools
const allTools = await registry.listAll();
interface ToolRegistry {
    register(
        tool: AgentTool<unknown, unknown>,
        metadata?: Partial<ToolMetadata>,
    ): Promise<void>;
    unregister(name: string): Promise<boolean>;
    get(name: string): Promise<null | AgentTool<unknown, unknown>>;
    has(name: string): Promise<boolean>;
    listAll(): Promise<AgentTool<unknown, unknown>[]>;
    getMetadata(name: string): Promise<null | ToolMetadata>;
    search(options: ToolSearchOptions): Promise<ToolSearchResult[]>;
    getDefinitions(names?: string[]): Promise<AgentToolDefinition[]>;
    listCategories(): Promise<string[]>;
    listTags(): Promise<string[]>;
    getByCategory(category: string): Promise<AgentTool<unknown, unknown>[]>;
    getByTag(tag: string): Promise<AgentTool<unknown, unknown>[]>;
    clear(): Promise<void>;
    count(): Promise<number>;
}

Methods

  • Unregister a tool by name

    Parameters

    • name: string

      The tool name

    Returns Promise<boolean>

    true if tool was removed, false if not found

  • Check if a tool is registered

    Parameters

    • name: string

      The tool name

    Returns Promise<boolean>

    true if registered