> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentium.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Toolkits

> Pre-built tool collections for common integrations — web search, email, messaging, databases, and more.

# Toolkits

A **Toolkit** is a collection of related tools that share configuration and can be added to any Agent. Agentium ships with 28 pre-built toolkits for common integrations so you don't have to write boilerplate.

```typescript theme={null}
import { Agent, openai, DuckDuckGoToolkit } from "@agentium/core";

const ddg = new DuckDuckGoToolkit();

const agent = new Agent({
  name: "assistant",
  model: openai("gpt-4o"),
  tools: [...ddg.getTools()],  // Spread toolkit tools into the agent
});
```

***

## Available Toolkits

### Utility (No API Key)

<CardGroup cols={2}>
  <Card title="Calculator" icon="calculator" href="/toolkits/calculator">
    Evaluate math expressions safely — arithmetic and Math functions.
  </Card>

  <Card title="File System" icon="folder-open" href="/toolkits/filesystem">
    Read, write, list, and inspect local files with path sandboxing.
  </Card>

  <Card title="Shell" icon="terminal" href="/toolkits/shell">
    Execute shell commands with timeout and command allowlisting.
  </Card>

  <Card title="Wikipedia" icon="book" href="/toolkits/wikipedia">
    Search and read Wikipedia articles — no API key required.
  </Card>

  <Card title="PDF" icon="file-pdf" href="/toolkits/pdf">
    Extract text, metadata, and page content from PDF files.
  </Card>

  <Card title="Git" icon="code-branch" href="/toolkits/git">
    Local git operations — status, diff, log, commit, branch.
  </Card>

  <Card title="Code Interpreter" icon="code" href="/toolkits/code-interpreter">
    Execute JavaScript, Python, or TypeScript in a subprocess.
  </Card>
</CardGroup>

### Web & Search

<CardGroup cols={2}>
  <Card title="DuckDuckGo" icon="magnifying-glass" href="/toolkits/duckduckgo">
    Web search and news — no API key required.
  </Card>

  <Card title="Web Search" icon="globe" href="/toolkits/websearch">
    Tavily or SerpAPI-powered web search with AI-optimized results.
  </Card>

  <Card title="HTTP / REST" icon="code" href="/toolkits/http">
    Make arbitrary HTTP requests — call any API.
  </Card>

  <Card title="Web Scraper" icon="spider-web" href="/toolkits/scraper">
    Extract text content and links from web pages.
  </Card>

  <Card title="Hacker News" icon="newspaper" href="/toolkits/hackernews">
    Top stories and user details from HN — no API key required.
  </Card>

  <Card title="YouTube" icon="youtube" href="/toolkits/youtube">
    Search videos and extract transcripts/captions.
  </Card>
</CardGroup>

### Data & Storage

<CardGroup cols={2}>
  <Card title="SQL Database" icon="database" href="/toolkits/sql">
    Query SQLite, PostgreSQL, or MySQL databases.
  </Card>

  <Card title="Redis" icon="server" href="/toolkits/redis">
    Get, set, delete, list, and increment keys in Redis.
  </Card>

  <Card title="S3 Cloud Storage" icon="cloud-arrow-up" href="/toolkits/s3">
    Upload, download, list, and presign URLs for S3-compatible storage.
  </Card>

  <Card title="Google Sheets" icon="table" href="/toolkits/google-sheets">
    Read, write, and append data in Google Sheets.
  </Card>
</CardGroup>

### Communication

<CardGroup cols={2}>
  <Card title="Gmail" icon="envelope" href="/toolkits/gmail">
    Send, search, and read emails via Gmail API.
  </Card>

  <Card title="WhatsApp" icon="message" href="/toolkits/whatsapp">
    Send messages via Meta's WhatsApp Business Cloud API.
  </Card>

  <Card title="Slack" icon="slack" href="/toolkits/slack">
    Send/read messages, list channels, and reply in threads.
  </Card>

  <Card title="Telegram" icon="paper-plane" href="/toolkits/telegram">
    Send messages, photos, and read updates via Telegram Bot API.
  </Card>

  <Card title="Discord" icon="discord" href="/toolkits/discord">
    Send/read messages, list channels, and reply in threads.
  </Card>
</CardGroup>

### Project Management & Productivity

<CardGroup cols={2}>
  <Card title="GitHub" icon="github" href="/toolkits/github">
    Repositories, issues, PRs, and file content.
  </Card>

  <Card title="Jira" icon="jira" href="/toolkits/jira">
    Search, create, update issues and add comments.
  </Card>

  <Card title="Notion" icon="n" href="/toolkits/notion">
    Search pages, read content, create pages, and query databases.
  </Card>

  <Card title="Google Calendar" icon="calendar" href="/toolkits/calendar">
    List, create, get, and delete calendar events.
  </Card>

  <Card title="Stripe" icon="credit-card" href="/toolkits/stripe">
    Charges, customers, refunds, subscriptions, and invoices.
  </Card>
</CardGroup>

### AI & Creative

<CardGroup cols={2}>
  <Card title="Image Generation" icon="image" href="/toolkits/image-generation">
    Generate and edit images via OpenAI DALL-E API.
  </Card>
</CardGroup>

***

## Quick Reference

| Toolkit          | Tools                                                                                                                                | Auth Required                 |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- |
| Calculator       | `calculate`                                                                                                                          | None                          |
| File System      | `fs_read_file`, `fs_write_file`, `fs_list_directory`, `fs_file_info`                                                                 | None                          |
| Shell            | `shell_exec`                                                                                                                         | None                          |
| Wikipedia        | `wikipedia_search`, `wikipedia_summary`                                                                                              | None                          |
| DuckDuckGo       | `duckduckgo_search`, `duckduckgo_news`                                                                                               | None                          |
| Hacker News      | `hackernews_top_stories`, `hackernews_user`                                                                                          | None                          |
| Web Search       | `web_search`                                                                                                                         | Tavily or SerpAPI key         |
| HTTP / REST      | `http_request`                                                                                                                       | Depends on target API         |
| Web Scraper      | `scrape_url`, `scrape_links`                                                                                                         | None                          |
| YouTube          | `youtube_transcript`, `youtube_search`                                                                                               | YouTube API key (search only) |
| SQL Database     | `sql_query`, `sql_tables`, `sql_describe`                                                                                            | DB connection string          |
| Gmail            | `gmail_send`, `gmail_search`, `gmail_read`                                                                                           | Google OAuth2                 |
| WhatsApp         | `whatsapp_send_text`, `whatsapp_send_template`                                                                                       | Meta access token             |
| Slack            | `slack_send_message`, `slack_list_channels`, `slack_read_messages`, `slack_reply_thread`                                             | Slack Bot token               |
| GitHub           | `github_search_repos`, `github_list_issues`, `github_get_issue`, `github_create_issue`, `github_list_prs`, `github_get_file_content` | GitHub token                  |
| Jira             | `jira_search_issues`, `jira_get_issue`, `jira_create_issue`, `jira_update_issue`, `jira_add_comment`                                 | Jira API token                |
| Notion           | `notion_search`, `notion_get_page`, `notion_create_page`, `notion_query_database`                                                    | Notion token                  |
| Google Calendar  | `calendar_list_events`, `calendar_create_event`, `calendar_get_event`, `calendar_delete_event`                                       | Google OAuth2                 |
| PDF              | `pdf_extract_text`, `pdf_get_metadata`, `pdf_extract_pages`                                                                          | None                          |
| Git              | `git_status`, `git_diff`, `git_log`, `git_commit`, `git_branch`                                                                      | None                          |
| Code Interpreter | `code_run`                                                                                                                           | None                          |
| Google Sheets    | `sheets_read_range`, `sheets_write_range`, `sheets_append_row`, `sheets_list_sheets`                                                 | Google OAuth2                 |
| Redis            | `redis_get`, `redis_set`, `redis_delete`, `redis_list_keys`, `redis_increment`                                                       | Redis URL                     |
| S3 Cloud Storage | `s3_upload`, `s3_download`, `s3_list`, `s3_delete`, `s3_presign_url`                                                                 | AWS credentials               |
| Telegram         | `telegram_send_message`, `telegram_send_photo`, `telegram_get_updates`                                                               | Bot token                     |
| Discord          | `discord_send_message`, `discord_read_messages`, `discord_list_channels`, `discord_reply_thread`                                     | Bot token                     |
| Stripe           | `stripe_list_charges`, `stripe_get_customer`, `stripe_create_refund`, `stripe_list_subscriptions`, `stripe_get_invoice`              | Stripe secret key             |
| Image Generation | `image_generate`, `image_edit`                                                                                                       | OpenAI API key                |

***

## Using Toolkits

Every toolkit extends the `Toolkit` base class and exposes a `getTools()` method that returns `ToolDef[]`:

```typescript theme={null}
const toolkit = new SomeToolkit({ /* config */ });
const tools = toolkit.getTools();  // ToolDef[]
```

You can mix toolkit tools with local tools and MCP tools:

```typescript theme={null}
const agent = new Agent({
  tools: [
    ...ddg.getTools(),           // DuckDuckGo toolkit
    ...hn.getTools(),            // Hacker News toolkit
    ...mcpServer.getTools(),     // MCP tools
    myLocalTool,                 // Custom tool
  ],
});
```

***

## Building a Tool Library

Use `collectToolkitTools()` to combine multiple toolkit instances into a named tool library — useful for the Admin API and dynamic agent creation:

```typescript theme={null}
import { collectToolkitTools, CalculatorToolkit, DuckDuckGoToolkit, GitHubToolkit } from "@agentium/core";

const toolLibrary = collectToolkitTools([
  new CalculatorToolkit(),
  new DuckDuckGoToolkit(),
  new GitHubToolkit({ token: process.env.GITHUB_TOKEN }),
]);
// { calculate: ToolDef, duckduckgo_search: ToolDef, github_list_repos: ToolDef, ... }
```

Use `describeToolLibrary()` to get a serializable summary for API responses:

```typescript theme={null}
import { describeToolLibrary } from "@agentium/core";

const descriptions = describeToolLibrary(toolLibrary);
// [{ name: "calculate", description: "...", parameters: ["expression"] }, ...]
```

***

## Toolkit Catalog

Agentium includes a built-in `toolkitCatalog` that knows about all 28 toolkit types and their configuration requirements. This powers the Admin UI's toolkit browser.

```typescript theme={null}
import { toolkitCatalog } from "@agentium/core";

// List all available toolkit types
const all = toolkitCatalog.list();
// [{ id: "github", name: "GitHub", configFields: [...], requiresCredentials: true }, ...]

// Check what a toolkit needs
const github = toolkitCatalog.get("github");
// { id: "github", configFields: [{ name: "token", secret: true, envVar: "GITHUB_TOKEN" }], ... }

// Instantiate from a config object
const tk = toolkitCatalog.create("github", { token: "ghp_..." });
```

Each catalog entry includes:

| Field                 | Description                                                                          |
| --------------------- | ------------------------------------------------------------------------------------ |
| `id`                  | Machine ID (e.g. `"github"`, `"slack"`)                                              |
| `name`                | Display name (e.g. `"GitHub"`, `"Slack"`)                                            |
| `description`         | What the toolkit does                                                                |
| `category`            | `utility`, `search`, `api`, `enterprise`, or `communication`                         |
| `requiresCredentials` | Whether the toolkit needs API keys                                                   |
| `configFields`        | Array of fields with `name`, `label`, `type`, `required`, `secret`, `envVar`, `hint` |

<Tip>
  The `@agentium/admin` package uses the toolkit catalog to let users configure toolkit credentials from a UI — see [Admin: Toolkit Configuration](/admin/overview#toolkit-configuration-dynamic-credentials).
</Tip>

***

## Creating Custom Toolkits

Extend the `Toolkit` base class:

```typescript theme={null}
import { Toolkit, defineTool } from "@agentium/core";
import { z } from "zod";

export class MyToolkit extends Toolkit {
  readonly name = "my-toolkit";

  getTools() {
    return [
      defineTool({
        name: "my_tool",
        description: "Does something useful",
        parameters: z.object({ input: z.string() }),
        execute: async (args) => `Result: ${args.input}`,
      }),
    ];
  }
}
```

### Registering in the Catalog

To make a custom toolkit available in the admin UI's toolkit browser, register it in the catalog:

```typescript theme={null}
import { toolkitCatalog } from "@agentium/core";
import { MyToolkit } from "./my-toolkit.js";

toolkitCatalog.register({
  id: "my-toolkit",
  name: "My Toolkit",
  description: "Does useful things",
  category: "utility",
  requiresCredentials: false,
  configFields: [
    { name: "input", label: "Input", type: "string" },
  ],
  factory: (config) => new MyToolkit(config),
});
```
