# Agent Toolbox: images, speech, chat, markdown and more (`zaffy_93/agent-toolbox`) Actor

Everyday tools for AI agents in one Actor: image generation, speech to text, chat models (gpt-oss-120b, Qwen3), web pages and PDFs to Markdown, summaries, embeddings, translation, email checks, exchange rates, DNS and WHOIS. Pay per call; failed calls are free.

- **URL**: https://apify.com/zaffy_93/agent-toolbox.md
- **Developed by:** [MohammedZafer Memon](https://apify.com/zaffy_93) (community)
- **Categories:** Agents, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 url to markdowns

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Agent Toolbox

Everyday tools for AI agents in one Actor. Pick a `tool`, pass its `input`, get one JSON answer. Each run is one call and is
charged only when it succeeds; bad input or a busy model costs nothing.

| Tool | What it does | Price |
|---|---|---|
| `generate_image` | Generate a 1024x1024 JPEG image from a text prompt with FLUX.1 schnell; every prompt passes a safety check first (sexual content and other unsafe requests are refused and not charged). | $0.015 |
| `url_to_markdown` | Fetch a public web page or document (HTML, PDF, Word, Excel, CSV, XML; up to 10 MB) and return it as clean Markdown with its title and final URL. | $0.003 |
| `file_to_markdown` | Convert an uploaded document (PDF, Word, Excel, CSV, HTML, XML, OpenDocument; up to 10 MB) to Markdown. | $0.004 |
| `transcribe_audio` | Speech to text with Whisper large v3 turbo: transcribe audio (mp3, wav, m4a, ogg, webm; up to 20 MB, about 20 minutes) from a URL or base64, or translate the speech into English. | $0.015 |
| `embed_text` | Text embeddings with BGE-M3 (multilingual, 1024 dimensions) for search, clustering and RAG: up to 100 texts of up to 8,000 characters per call. | $0.003 |
| `translate_text` | Translate text (up to 5,000 characters) between 100 languages with M2M100 1.2B. | $0.003 |
| `summarize` | Summarize text (up to 60,000 characters) or a public web page or PDF by URL with Llama 3.1 8B, short, medium or long, optionally focused on a topic. | $0.004 |
| `verify_email` | Check an email address: format, whether the domain exists and accepts mail (MX records), disposable providers, role accounts and free providers, with a valid / risky / invalid verdict. | $0.003 |
| `fx_rates` | Currency exchange rates and conversion for about 30 currencies (USD, EUR, GBP, INR, JPY, CNY ...) from the European Central Bank reference rates of the latest working day. | $0.003 |
| `dns_lookup` | DNS records of a domain (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV, PTR) over DNS-over-HTTPS (1.1.1.1), with DNSSEC validation status. | $0.003 |
| `chat_gpt_oss_120b` | OpenAI-compatible chat completion with gpt-oss-120b (OpenAI's open-weight reasoning model): set the base URL to /v1/llm/gpt-oss-120b in any OpenAI SDK. | $0.008 |
| `chat_qwen3_30b` | OpenAI-compatible chat completion with Qwen3 30B (fast mixture-of-experts model): set the base URL to /v1/llm/qwen3-30b in any OpenAI SDK. | $0.003 |
| `domain_whois` | Domain registration data from RDAP (the successor of WHOIS): registrar, creation, expiry and update dates, status codes, nameservers and DNSSEC. | $0.003 |

### Examples

```json
{"tool": "url_to_markdown", "input": {"url": "https://example.com"}}
{"tool": "generate_image", "input": {"prompt": "a lighthouse on a cliff at sunrise, watercolor"}}
{"tool": "chat_gpt_oss_120b", "input": {"messages": [{"role": "user", "content": "Explain RAG in two sentences."}]}}
{"tool": "transcribe_audio", "input": {"audio_url": "https://example.com/meeting.mp3"}}
```

The answer is the dataset item (and the `OUTPUT` record). Generated images are also saved as `image.jpg` in the run's
key-value store.

### Same tools elsewhere

- Remote MCP server, nothing to install: `https://agent-toolbox.zafermemon87.workers.dev/mcp`
- HTTP API paid per call with x402 (USDC on Base): `https://agent-toolbox.zafermemon87.workers.dev` ([OpenAPI](https://agent-toolbox.zafermemon87.workers.dev/openapi.json))
- Free web reader: `https://agent-toolbox.zafermemon87.workers.dev/r/https://example.com`

Models run on Cloudflare Workers AI (FLUX.1 schnell, Whisper large v3 turbo, gpt-oss-120b, Qwen3 30B, Llama 3.1 8B, BGE-M3, M2M100).
Exchange rates: European Central Bank. Web reads follow each site's robots.txt.

# Actor input Schema

## `tool` (type: `string`):

Which tool to run. Each run is one call, charged only if it succeeds.

## `input` (type: `object`):

The tool's own input. <b>generate_image</b> ($0.015): Generate a 1024x1024 JPEG image from a text prompt with FLUX.1 schnell; every prompt passes a safety check first (sexual content and other unsafe requests are refused and not charged). Returns the image as base64. Input fields: prompt, steps. <b>url_to_markdown</b> ($0.003): Fetch a public web page or document (HTML, PDF, Word, Excel, CSV, XML; up to 10 MB) and return it as clean Markdown with its title and final URL. Input fields: url. <b>file_to_markdown</b> ($0.004): Convert an uploaded document (PDF, Word, Excel, CSV, HTML, XML, OpenDocument; up to 10 MB) to Markdown. Input fields: filename, file_base64. <b>transcribe_audio</b> ($0.015): Speech to text with Whisper large v3 turbo: transcribe audio (mp3, wav, m4a, ogg, webm; up to 20 MB, about 20 minutes) from a URL or base64, or translate the speech into English. Returns the text, language, duration and timed segments. Input fields: audio_url, audio_base64, language, task. <b>embed_text</b> ($0.003): Text embeddings with BGE-M3 (multilingual, 1024 dimensions) for search, clustering and RAG: up to 100 texts of up to 8,000 characters per call. Input fields: texts. <b>translate_text</b> ($0.003): Translate text (up to 5,000 characters) between 100 languages with M2M100 1.2B. Input fields: text, target_lang, source_lang. <b>summarize</b> ($0.004): Summarize text (up to 60,000 characters) or a public web page or PDF by URL with Llama 3.1 8B, short, medium or long, optionally focused on a topic. Input fields: text, url, length, focus. <b>verify_email</b> ($0.003): Check an email address: format, whether the domain exists and accepts mail (MX records), disposable providers, role accounts and free providers, with a valid / risky / invalid verdict. The mailbox itself is not probed. Input fields: email. <b>fx_rates</b> ($0.003): Currency exchange rates and conversion for about 30 currencies (USD, EUR, GBP, INR, JPY, CNY ...) from the European Central Bank reference rates of the latest working day. Input fields: base, symbols, amount. <b>dns_lookup</b> ($0.003): DNS records of a domain (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV, PTR) over DNS-over-HTTPS (1.1.1.1), with DNSSEC validation status. Input fields: name, type. <b>chat_gpt_oss_120b</b> ($0.008): OpenAI-compatible chat completion with gpt-oss-120b (OpenAI's open-weight reasoning model): set the base URL to /v1/llm/gpt-oss-120b in any OpenAI SDK. Up to 32,000 characters in and 2,048 tokens out per call, a fixed price per call, no streaming. Input fields: messages, max_tokens, temperature, response_format. <b>chat_qwen3_30b</b> ($0.003): OpenAI-compatible chat completion with Qwen3 30B (fast mixture-of-experts model): set the base URL to /v1/llm/qwen3-30b in any OpenAI SDK. Up to 32,000 characters in and 2,048 tokens out per call, a fixed price per call, no streaming. Input fields: messages, max_tokens, temperature, response_format. <b>domain_whois</b> ($0.003): Domain registration data from RDAP (the successor of WHOIS): registrar, creation, expiry and update dates, status codes, nameservers and DNSSEC. Input fields: domain.

## Actor input object example

```json
{
  "tool": "url_to_markdown",
  "input": {
    "url": "https://example.com"
  }
}
```

# Actor output Schema

## `data` (type: `string`):

No description

## `output` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "input": {
        "url": "https://example.com"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaffy_93/agent-toolbox").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "input": { "url": "https://example.com" } }

# Run the Actor and wait for it to finish
run = client.actor("zaffy_93/agent-toolbox").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "input": {
    "url": "https://example.com"
  }
}' |
apify call zaffy_93/agent-toolbox --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaffy_93/agent-toolbox"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OhbXjLt8TlQF8YNJ5/builds/2HktszEa6bMx0xvvC/openapi.json
