
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
@agentskit/tools
Advanced tools
Give your agents real-world capabilities without writing a single integration.
Tags: ai · agents · llm · agentskit · ai-agents · function-calling · tool-use · mcp · web-search · filesystem
@agentskit/tools gives agents useful hands: web fetch, search, filesystem, shell, SQLite, integrations, and MCP-friendly tool definitions.
Docs: package guide · agent handoff
basePath, shell commands require an explicit allowlist, so agents can't escape their boundaries@agentskit/runtime, useChat, or any custom ReAct loop@agentskit/templates and register them the same way as built-insnpm install @agentskit/tools
import { createRuntime } from '@agentskit/runtime'
import { openai } from '@agentskit/adapters'
import { webSearch, filesystem, shell } from '@agentskit/tools'
const runtime = createRuntime({
adapter: openai({ apiKey: process.env.OPENAI_API_KEY, model: 'gpt-4o' }),
tools: [
webSearch(),
...filesystem({ basePath: './workspace' }),
shell({ timeout: 10_000, allowed: ['ls', 'cat', 'grep'] }),
],
})
const result = await runtime.run('Find the README and summarize it')
console.log(result.content)
useChat (browser)Tools are plain ToolDefinition values — register them in useChat the same way as in createRuntime.
defineZodToolIf you use Zod, @agentskit/tools ships defineZodTool — a factory that:
execute args from a Zod schema (full TypeScript inference)schema.parse before calling your functiontoJsonSchema callbackZod and zod-to-json-schema are not bundled — install them as peer dependencies.
npm install zod zod-to-json-schema
import { z } from 'zod'
import { zodToJsonSchema } from 'zod-to-json-schema'
import { defineZodTool } from '@agentskit/tools'
import type { JSONSchema7 } from 'json-schema'
const lookupUser = defineZodTool({
name: 'lookup_user',
description: 'Look up a user by ID.',
schema: z.object({
userId: z.string().uuid(),
includeProfile: z.boolean().optional(),
}),
toJsonSchema: (s) => zodToJsonSchema(s) as JSONSchema7,
async execute(args) {
// args.userId → string (UUID-validated by Zod at runtime)
// args.includeProfile → boolean | undefined
return await db.users.findById(args.userId, { profile: args.includeProfile })
},
})
For tools without Zod, use defineTool from @agentskit/core with a JSON Schema as const.
webSearch() — live web search with pluggable providers (Tavily, Brave, SerpAPI, custom).fetchUrl() — safe HTTP GET with JSON / text handling, size cap, boilerplate stripping.filesystem({ basePath }) — sandboxed read, write, list, delete, stat, exists.shell({ allowed }) — shell execution with command allow-list + timeout.sqliteQueryTool({ path }) — read-only SQL against a local SQLite file. Optional peer dep on better-sqlite3. Note: never feed unvalidated user prompts straight into the sql field — wrap with input filtering or use parameterized helpers if exposing it to untrusted input.slackTool({ webhookUrl }) — post to a Slack Incoming Webhook. For Bearer-token features (search, channel listing), use the slack() integration.github, linear, slack, notion, discord, gmail,
googleCalendar, stripe, postgres, s3, firecrawl, reader,
documentParsers (PDF / DOCX / XLSX), openaiImages, elevenlabs,
whisper, deepgram, maps, weather, coingecko, browserAgent
(Puppeteer). Each integration exports granular sub-tools (e.g.
githubCreateIssue, stripeCreatePaymentIntent) alongside the bundled
set.
defineZodTool — Zod-based factory with runtime validation + type inference.composeTool — chain N tools into one macro tool (each step receives previous output).wrapToolWithSelfDebug — LLM-corrected retries on schema-mismatch or execution failure.createMandatorySandbox — policy wrapper: allow / deny / requireSandbox / validators.createMcpClient + toolsFromMcpClient — consume any MCP server's tools.createMcpServer — publish AgentsKit tools to any MCP host.All tools honor the ToolDefinition contract (ADR 0002) — parallel
tool calling works with any adapter, @agentskit/runtime, useChat,
or a custom loop.
| Subpath | Contents |
|---|---|
@agentskit/tools/mcp | createMcpClient, createMcpServer, toolsFromMcpClient, stdio + in-memory transports. MCP bridge recipe. |
@agentskit/tools/integrations | github, linear, slack, notion, discord, gmail, googleCalendar, stripe, postgres, s3, firecrawl, reader, documentParsers, openaiImages, elevenlabs, whisper, deepgram, maps, weather, coingecko, browserAgent. Integrations recipe + More integrations. |
| Package | Role |
|---|---|
| @agentskit/core | ToolDefinition contract |
| @agentskit/runtime | createRuntime({ tools }) |
| @agentskit/react | useChat + tools in the UI |
| @agentskit/templates | Scaffold new tools |
MIT — see LICENSE.
FAQs
Reusable executable tools for AgentsKit agents.
The npm package @agentskit/tools receives a total of 398 weekly downloads. As such, @agentskit/tools popularity was classified as not popular.
We found that @agentskit/tools demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.