# DynamicStructuredTool

> **Class** in `langchain`

📖 [View in docs](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool)

A tool that can be created dynamically from a function, name, and
description, designed to work with structured data. It extends the
StructuredTool class and overrides the _call method to execute the
provided function when the tool is called.

Schema can be passed as Zod or JSON schema. The tool will not validate
input if JSON schema is passed.

## Signature

```javascript
class DynamicStructuredTool
```

## Extends

- `StructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT, ToolEventT>`

## Constructors

- [`constructor()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/constructor)

## Properties

- `callbacks`
- `defaultConfig`
- `description`
- `extras`
- `func`
- `lc_kwargs`
- `lc_runnable`
- `lc_serializable`
- `metadata`
- `name`
- `responseFormat`
- `returnDirect`
- `schema`
- `tags`
- `verbose`
- `verboseParsingErrors`
- `lc_aliases`
- `lc_attributes`
- `lc_id`
- `lc_namespace`
- `lc_secrets`
- `lc_serializable_keys`

## Methods

- [`_addVersion()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_addVersion)
- [`_batchWithConfig()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_batchWithConfig)
- [`_call()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_call)
- [`_callWithConfig()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_callWithConfig)
- [`_getOptionsList()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_getOptionsList)
- [`_separateRunnableConfigFromCallOptions()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_separateRunnableConfigFromCallOptions)
- [`_streamIterator()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_streamIterator)
- [`_streamLog()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_streamLog)
- [`_transformStreamWithConfig()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/_transformStreamWithConfig)
- [`assign()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/assign)
- [`asTool()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/asTool)
- [`batch()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/batch)
- [`call()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/call)
- [`getGraph()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/getGraph)
- [`getName()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/getName)
- [`invoke()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/invoke)
- [`pick()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/pick)
- [`pipe()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/pipe)
- [`stream()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/stream)
- [`streamEvents()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/streamEvents)
- [`streamLog()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/streamLog)
- [`toJSON()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/toJSON)
- [`toJSONNotImplemented()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/toJSONNotImplemented)
- [`transform()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/transform)
- [`withConfig()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/withConfig)
- [`withFallbacks()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/withFallbacks)
- [`withListeners()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/withListeners)
- [`withRetry()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/withRetry)
- [`isRunnable()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/isRunnable)
- [`lc_name()`](https://reference.langchain.com/javascript/langchain/index/DynamicStructuredTool/lc_name)

---

[View source on GitHub](https://github.com/langchain-ai/langchainjs/blob/62fc484b2a0d1ec5b8bebff4a8a0efe6300ada72/libs/langchain-core/src/tools/index.ts#L132)