# BaseTool

> **Class** in `langchain_core`

📖 [View in docs](https://reference.langchain.com/python/langchain-core/tools/base/BaseTool)

Base class for all LangChain tools.

This abstract class defines the interface that all LangChain tools must implement.

Tools are components that can be called by agents to perform specific actions.

## Signature

```python
BaseTool(
    self,
    **kwargs: Any = {},
)
```

## Extends

- `RunnableSerializable[str | dict | ToolCall, Any]`

## Constructors

```python
__init__(
    self,
    **kwargs: Any = {},
) -> None
```


## Properties

- `name`
- `description`
- `args_schema`
- `return_direct`
- `verbose`
- `callbacks`
- `tags`
- `metadata`
- `handle_tool_error`
- `handle_validation_error`
- `response_format`
- `extras`
- `model_config`
- `is_single_input`
- `args`
- `tool_call_schema`

## Methods

- [`get_input_schema()`](https://reference.langchain.com/python/langchain-core/tools/base/BaseTool/get_input_schema)
- [`invoke()`](https://reference.langchain.com/python/langchain-core/tools/base/BaseTool/invoke)
- [`ainvoke()`](https://reference.langchain.com/python/langchain-core/tools/base/BaseTool/ainvoke)
- [`run()`](https://reference.langchain.com/python/langchain-core/tools/base/BaseTool/run)
- [`arun()`](https://reference.langchain.com/python/langchain-core/tools/base/BaseTool/arun)

---

[View source on GitHub](https://github.com/langchain-ai/langchain/blob/8fec4e7ceee2c368b068c49f9fed453276e210e7/libs/core/langchain_core/tools/base.py#L405)