# StructuredTool

> **Class** in `@langchain/core`

📖 [View in docs](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool)

Base class for Tools that accept input of any shape defined by a Zod schema.

## Signature

```javascript
class StructuredTool
```

## Extends

- `BaseLangChain<StructuredToolCallInput<SchemaT, SchemaInputT>, ToolOutputT | ToolMessage>`

## Implements

- `StructuredToolInterface<SchemaT, SchemaInputT, ToolOutputT>`

## Constructors

- [`constructor()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/constructor)

## Properties

- `callbacks`
- `defaultConfig`
- `description`
- `extras`
- `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-core/tools/StructuredTool/_addVersion)
- [`_batchWithConfig()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_batchWithConfig)
- [`_call()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_call)
- [`_callWithConfig()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_callWithConfig)
- [`_getOptionsList()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_getOptionsList)
- [`_separateRunnableConfigFromCallOptions()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_separateRunnableConfigFromCallOptions)
- [`_streamIterator()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_streamIterator)
- [`_streamLog()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_streamLog)
- [`_transformStreamWithConfig()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/_transformStreamWithConfig)
- [`assign()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/assign)
- [`asTool()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/asTool)
- [`batch()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/batch)
- [`call()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/call)
- [`getGraph()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/getGraph)
- [`getName()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/getName)
- [`invoke()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/invoke)
- [`pick()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/pick)
- [`pipe()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/pipe)
- [`stream()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/stream)
- [`streamEvents()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/streamEvents)
- [`streamLog()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/streamLog)
- [`toJSON()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/toJSON)
- [`toJSONNotImplemented()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/toJSONNotImplemented)
- [`transform()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/transform)
- [`withConfig()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/withConfig)
- [`withFallbacks()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/withFallbacks)
- [`withListeners()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/withListeners)
- [`withRetry()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/withRetry)
- [`isRunnable()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/isRunnable)
- [`lc_name()`](https://reference.langchain.com/javascript/langchain-core/tools/StructuredTool/lc_name)

---

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