---
title: Vended Tools
description: "Pre-built tools included in the TypeScript SDK for common agent tasks like file operations, shell commands, HTTP requests, and persistent notes."
sidebar:
  label: "Vended Tools"
languages: [typescript]
tags: [tool-authoring]
---

Vended tools are pre-built tools included directly in the Strands SDK for common agent tasks like file operations, shell commands, HTTP requests, and persistent notes. 

They ship as part of the SDK package and are updated alongside it — see [Versioning & Maintenance](#versioning--maintenance) for details on how changes are communicated and what level of backwards compatibility they maintain.

## Quick Start

Each tool is imported from its own subpath under `@strands-agents/sdk/vended-tools` — no additional packages required:

```typescript
--8<-- "user-guide/concepts/tools/vended-tools.ts:basic_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:agent_with_vended_tools"
```

## Available Tools

| Tool | Description | Supported in |
|------|-------------|--------------|
| [File Editor](#file-editor) | View, create, and edit files | Node.js |
| [HTTP Request](#http-request) | Make HTTP requests to external APIs | Node.js 20+, browsers |
| [Notebook](#notebook) | Manage persistent text notebooks | Node.js, browsers |
| [Bash](#bash) | Execute shell commands with persistent sessions | Node.js (Unix/Linux/macOS) |

### File Editor

Gives your agent the ability to read and modify files on disk — useful for coding agents, config management, or any workflow where the agent needs to inspect output and make targeted edits.

_Supported in: Node.js only._

:::caution[Security Warning]
This tool reads and writes files at arbitrary absolute paths with the full permissions of the Node.js process. Only use with trusted input and consider running in a sandboxed environment (containers, VMs) for production.
:::

**Example:**
```typescript
--8<-- "user-guide/concepts/tools/vended-tools-imports.ts:file_editor_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:file_editor_example"
```

📖 [Full API Reference](https://github.com/strands-agents/harness-sdk/blob/main/strands-ts/src/vended-tools/file-editor/README.md)

---

### HTTP Request

Lets your agent call external APIs and fetch web content. Supports all HTTP methods, custom headers, and request bodies. Default timeout is 30 seconds.

_Supported in: Node.js 20+, modern browsers._

:::caution[Security Warning]
This tool makes HTTP requests to arbitrary URLs without restrictions on destination. Only use with trusted input and consider running in a sandboxed environment (containers, VMs) for production.
:::

**Example:**
```typescript
--8<-- "user-guide/concepts/tools/vended-tools-imports.ts:http_request_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:http_request_example"
```

📖 [Full API Reference](https://github.com/strands-agents/harness-sdk/blob/main/strands-ts/src/vended-tools/http-request/README.md)

---

### Notebook

A scratchpad the agent can read and write across invocations. The most effective use is giving the agent a notebook at the start of a task and instructing it to plan its work there — it can break the task into steps, check things off as it goes, and always have a clear picture of what's left. Notebook state is part of the agent's state, so it persists automatically with [Session Management](../agents/session-management.mdx).

_Supported in: Node.js, browsers._

**Example - Task Management:**
```typescript
--8<-- "user-guide/concepts/tools/vended-tools-imports.ts:notebook_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:notebook_example"
```

**Example - State Persistence:**
```typescript
--8<-- "user-guide/concepts/tools/vended-tools-imports.ts:notebook_persistence_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:notebook_state_persistence"
```

📖 [Full API Reference](https://github.com/strands-agents/harness-sdk/blob/main/strands-ts/src/vended-tools/notebook/README.md)

---

### Bash

Lets your agent run shell commands and act on the output. Shell state — variables, working directory, exported functions — persists across invocations within the same session, so the agent can build up context incrementally. Sessions can be restarted to clear state.

_Supported in: Node.js on Unix/Linux/macOS. Not supported on Windows._

:::caution[Security Warning]
This tool executes arbitrary bash commands without sandboxing. Commands run with the full permissions of the Node.js process. Only use with trusted input and consider running in sandboxed environments (containers, VMs) for production.
:::

**Example - File Operations:**
```typescript
--8<-- "user-guide/concepts/tools/vended-tools-imports.ts:bash_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:bash_example"
```

**Example - Session Persistence:**
```typescript
--8<-- "user-guide/concepts/tools/vended-tools-imports.ts:bash_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:bash_session"
```

📖 [Full API Reference](https://github.com/strands-agents/harness-sdk/blob/main/strands-ts/src/vended-tools/bash/README.md)

---

## Using Multiple Tools Together

Combine vended tools to build powerful agent workflows:

```typescript
--8<-- "user-guide/concepts/tools/vended-tools-imports.ts:combined_import"

--8<-- "user-guide/concepts/tools/vended-tools.ts:combined_tools_example"
```

## Versioning & Maintenance

Vended tools ship as part of the SDK and are updated alongside it. Report bugs and feature requests in the [GitHub repository](https://github.com/strands-agents/harness-sdk/issues).

Tool names are stable and will not change. In minor versions, a tool's description, spec, or parameters may be updated to improve effectiveness — these changes are noted in SDK release notes. Pin your SDK version and test after upgrades if your workflows depend on specific tool behavior.

## See also

- [Custom Tools](custom-tools.mdx) — Build your own tools
- [Community Tools Package](community-tools-package.mdx) — Python tools package with 30+ tools
- [Session Management](../agents/session-management.mdx) — Persist agent state including notebooks
- [Interrupts](../interrupts.mdx) — Implement approval workflows for sensitive operations
- [Hooks](../agents/hooks.mdx) — Intercept and customize tool execution
