UNPKG

@ai-sdk/anthropic

Version:

The **[Anthropic provider](https://ai-sdk.dev/providers/ai-sdk-providers/anthropic)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the [Anthropic Messages API](https://docs.anthropic.com/claude/reference/messages_post).

100 lines (95 loc) 2.64 kB
import { createProviderToolFactoryWithOutputSchema, lazySchema, zodSchema, } from '@ai-sdk/provider-utils'; import { z } from 'zod/v4'; /** * Output schema for tool search results - returns tool references * that are automatically expanded into full tool definitions by the API. */ export const toolSearchBm25_20251119OutputSchema = lazySchema(() => zodSchema( z.array( z.object({ type: z.literal('tool_reference'), toolName: z.string(), }), ), ), ); /** * Input schema for BM25-based tool search. * Claude uses natural language queries to search for tools. */ const toolSearchBm25_20251119InputSchema = lazySchema(() => zodSchema( z.object({ /** * A natural language query to search for tools. * Claude will use BM25 text search to find relevant tools. */ query: z.string(), /** * Maximum number of tools to return. Optional. */ limit: z.number().optional(), }), ), ); const factory = createProviderToolFactoryWithOutputSchema< { /** * A natural language query to search for tools. * Claude will use BM25 text search to find relevant tools. */ query: string; /** * Maximum number of tools to return. Optional. */ limit?: number; }, Array<{ type: 'tool_reference'; /** * The name of the discovered tool. */ toolName: string; }>, {} >({ id: 'anthropic.tool_search_bm25_20251119', inputSchema: toolSearchBm25_20251119InputSchema, outputSchema: toolSearchBm25_20251119OutputSchema, supportsDeferredResults: true, }); /** * Creates a tool search tool that uses BM25 (natural language) to find tools. * * The tool search tool enables Claude to work with hundreds or thousands of tools * by dynamically discovering and loading them on-demand. Instead of loading all * tool definitions into the context window upfront, Claude searches your tool * catalog and loads only the tools it needs. * * When Claude uses this tool, it uses natural language queries (NOT regex patterns) * to search for tools using BM25 text search. * * **Important**: This tool should never have `deferLoading: true` in providerOptions. * * @example * ```ts * import { anthropicTools } from '@ai-sdk/anthropic'; * * const tools = { * toolSearch: anthropicTools.toolSearchBm25_20251119(), * // Other tools with deferLoading... * }; * ``` * * @see https://docs.anthropic.com/en/docs/agents-and-tools/tool-search-tool */ export const toolSearchBm25_20251119 = ( args: Parameters<typeof factory>[0] = {}, ) => { return factory(args); };