# TinyFish MCP

```json
{
  "name": "TinyFish MCP",
  "slug": "tinyfish_mcp",
  "url": "https://composio.dev/toolkits/tinyfish_mcp",
  "markdown_url": "https://composio.dev/toolkits/tinyfish_mcp.md",
  "logo_url": "https://logos.composio.dev/api/tinyfish_mcp",
  "categories": [
    "workflow automation"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-06-18T10:13:20.738Z"
}
```

![TinyFish MCP logo](https://logos.composio.dev/api/tinyfish_mcp)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with TinyFish MCP or direct API to browse websites, interact with pages, extract web data, and complete web workflows through natural language.

## Summary

TinyFish MCP is an AI-powered browser automation service for browsing, clicking, extracting, and interacting with websites.
Use it to run reliable web tasks without hand-writing fragile browser scripts.

## Categories

- workflow automation

## Toolkit Details

- Tools: 8

## Images

- Logo: https://logos.composio.dev/api/tinyfish_mcp

## Authentication

- **Dcr Oauth**
  - Type: `custom`
  - Description: Dcr Oauth authentication for TinyFish MCP.
  - Setup:
    - Configure Dcr Oauth credentials for TinyFish MCP.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Summarize top Hacker News stories
- Check pricing on competitor websites
- Fill website forms from spreadsheet

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `TINYFISH_MCP_CANCEL_RUN` | Cancel run | Cancels a running or pending automation run by its ID. Idempotent: if the run is already in a terminal state (COMPLETED, FAILED, CANCELLED), returns the current status without error. Only PENDING and RUNNING runs will be actively cancelled. |
| `TINYFISH_MCP_DISCOVER_RUN` | Discover run | Discovers the currently running automation for this session. Returns runId if a run is active, or null if not yet started. |
| `TINYFISH_MCP_GET_RUN` | Get run | Retrieves details of a specific automation run by its ID. Returns status, result, error, and other metadata. IMPORTANT: Call this after run_web_automation errors or times out — the run is likely still executing. If you do not have a run_id, use list_runs to find it. Also use this to poll for completion after run_web_automation_async. Runs typically take a few minutes. Wait 30-60 seconds between polls. |
| `TINYFISH_MCP_GET_STEPS` | Get steps | Retrieves the steps taken during an automation run, including screenshots. |
| `TINYFISH_MCP_LIST_RUNS` | List runs | Lists automation runs with optional filtering by status and pagination support. Returns an array of runs with their details. Use this to find a recently created run when you do not have its run_id (e.g., after run_web_automation timed out before returning a run_id). Filter by status=RUNNING to find active runs. |
| `TINYFISH_MCP_POLL_STATUS` | Poll status | Polls the current status of an automation run. Returns status, step, progress, and other metadata. |
| `TINYFISH_MCP_RUN_WEB_AUTOMATION` | Run web automation | Executes web automation given a URL and a Natural Language description of the automation goal to be performed. Automation is mostly focused around navigating complex web pages and extracting data from web pages. Include _meta.progressToken in your request to receive progress notifications. WARNING: This tool may take several minutes. If it errors or times out, the run is STILL EXECUTING on the server. DO NOT call this tool again or call run_web_automation_async — both would create a duplicate run. Instead: if you have a run_id from progress notifications, call get_run. If you have no run_id, call list_runs to find it. Only create a new run after confirming the previous one finished. |
| `TINYFISH_MCP_RUN_WEB_AUTOMATION_ASYNC` | Run web automation async | Starts a NEW web automation run asynchronously and returns a run_id immediately without waiting for completion. WARNING: Do NOT use this to retry a failed run_web_automation call — that run is still executing. Use get_run or list_runs to check its status instead. Only use this tool for genuinely new tasks. Workflow: 1) Call this tool to get a run_id. 2) Wait 30-60 seconds. 3) Call get_run with the run_id to check status. 4) Repeat step 2-3 until status is COMPLETED, FAILED, or CANCELLED. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK
```python
pip install composio_openai
```

```typescript
npm install @composio/openai
```

#### Path 1, Step 2: Initialize Composio and Create Tool Router Session

Import and initialize Composio client, then create a Tool Router session
```python
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
openai = OpenAI()
session = composio.create(user_id='your-user-id')
```

```typescript
import OpenAI from 'openai';
import { Composio } from '@composio/core';
import { OpenAIResponsesProvider } from '@composio/openai';

const composio = new Composio({
  provider: new OpenAIResponsesProvider(),
});
const openai = new OpenAI({});
const session = await composio.create('your-user-id');
```

#### Path 1, Step 3: Execute TinyFish MCP Tools via Tool Router with Your Agent

Get tools from Tool Router session and execute TinyFish MCP browser automation actions with your Agent
```python
tools = session.tools
response = openai.responses.create(
  model='gpt-4.1',
  tools=tools,
  input=[{
    'role': 'user',
    'content': 'Visit https://news.ycombinator.com and summarize the top five stories with links'
  }]
)
result = composio.provider.handle_tool_calls(
  response=response,
  user_id='your-user-id'
)
print(result)
```

```typescript
const tools = session.tools;
const response = await openai.responses.create({
  model: 'gpt-4.1',
  tools: tools,
  input: [{
    role: 'user',
    content: 'Visit https://news.ycombinator.com and summarize the top five stories with links'
  }],
});
const result = await composio.provider.handleToolCalls(
  'your-user-id',
  response.output
);
console.log(result);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK for Python or TypeScript
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/openai @ai-sdk/mcp
```

#### Path 2, Step 2: Initialize Client and Create Tool Router Session

Import and initialize the Composio client, then create a Tool Router session for TinyFish MCP
```python
from composio import Composio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

composio = Composio(api_key='your-composio-api-key')
session = composio.create(user_id='your-user-id')
url = session.mcp.url
```

```typescript
import { Composio } from '@composio/core';

const composio = new Composio({ apiKey: 'your-api-key' });
const session = await composio.create('your-user-id');
console.log(`Tool Router session created: ${session.mcp.url}`);
```

#### Path 2, Step 3: Connect to AI Agent

Use the MCP server with your AI agent (Anthropic Claude or Mastra)
```python
import asyncio

options = ClaudeAgentOptions(
    permission_mode='bypassPermissions',
    mcp_servers={
        'tool_router': {
            'type': 'http',
            'url': url,
            'headers': {
                'x-api-key': 'your-composio-api-key'
            }
        }
    },
    system_prompt='You are a helpful assistant with access to TinyFish MCP tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('Visit https://news.ycombinator.com and summarize the top five stories with links')
        async for message in client.receive_response():
            if hasattr(message, 'content'):
                for block in message.content:
                    if hasattr(block, 'text'):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { openai } from '@ai-sdk/openai';
import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp';
import { generateText } from 'ai';

const client = await createMCPClient({
  transport: {
    type: 'http',
    url: session.mcp.url,
    headers: {
      'x-api-key': 'your-composio-api-key',
    },
  },
});

const tools = await client.tools();
const { text } = await generateText({
  model: openai('gpt-4o'),
  tools,
  messages: [{
    role: 'user',
    content: 'Visit https://news.ycombinator.com and summarize the top five stories with links'
  }],
  maxSteps: 5,
});

console.log(`Agent: ${text}`);
```

## Why Use Composio?

### 1. AI Native TinyFish MCP Integration

- Supports both TinyFish MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable browser actions
- Rich coverage for browsing pages, clicking elements, extracting content, and running web tasks

### 2. Managed Auth

- Built-in OAuth handling for connecting TinyFish MCP accounts securely
- Central place to manage, scope, and revoke TinyFish MCP access
- Per user and per environment credentials instead of hard-coded secrets

### 3. Agent Optimized Design

- Tools are tuned for AI agents that need to browse, inspect, and act on live websites
- Comprehensive execution logs so you can see which pages were visited and what actions ran

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access TinyFish MCP
- Scoped, least privilege access for browser automation workflows
- Full audit trail of agent web actions to support review and compliance

## Use TinyFish MCP with any AI Agent Framework

Choose a framework you want to connect TinyFish MCP with:

- [Claude Cowork](https://composio.dev/toolkits/tinyfish_mcp/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/tinyfish_mcp/framework/codex)

## Related Toolkits

- [Apify MCP](https://composio.dev/toolkits/apify_mcp) - Apify MCP is the official MCP server for Apify's web scraping and browser automation platform. Use it to run actors, collect structured web data, and automate crawling workflows.
- [Apilio](https://composio.dev/toolkits/apilio) - Apilio is a home automation platform that lets you connect and control smart devices from different brands. It helps you build flexible automations with complex conditions, schedules, and integrations.
- [Basin](https://composio.dev/toolkits/basin) - Basin is a no-code form backend for quickly setting up reliable contact forms. It lets you collect and manage form submissions without writing any server-side code.
- [Bouncer](https://composio.dev/toolkits/bouncer) - Bouncer is an email validation platform that verifies the authenticity of email addresses in real-time and batch. It helps boost deliverability and reduce bounce rates for your communications.
- [Celigo](https://composio.dev/toolkits/celigo) - Celigo is an integration platform as a service for connecting apps, data, and business workflows. It helps teams automate cross-system processes without building every integration from scratch.
- [Conveyor](https://composio.dev/toolkits/conveyor) - Conveyor is a platform that automates security reviews with a Trust Center and AI-driven questionnaire automation. It streamlines compliance and vendor security processes for faster, hassle-free reviews.
- [Crowdin](https://composio.dev/toolkits/crowdin) - Crowdin is a localization management platform that streamlines translation workflows and collaboration. It helps teams centralize multilingual content, boost productivity, and automate translation processes.
- [Databox](https://composio.dev/toolkits/databox) - Databox is a business analytics platform that connects your data from any tool and device. It helps you track KPIs, build dashboards, and discover actionable insights.
- [Detrack](https://composio.dev/toolkits/detrack) - Detrack is a delivery management platform for real-time tracking and proof of delivery. It helps businesses automate notifications and keep customers updated every step of the way.
- [Dnsfilter](https://composio.dev/toolkits/dnsfilter) - Dnsfilter is a cloud-based DNS security and content filtering solution. It helps organizations block online threats and manage safe internet access with ease.
- [Faraday](https://composio.dev/toolkits/faraday) - Faraday lets you embed AI in workflows across your stack for smarter automation. It boosts your favorite tools with actionable intelligence and seamless integration.
- [Feathery](https://composio.dev/toolkits/feathery) - Feathery is an AI-powered platform for building dynamic data intake forms with advanced logic. It helps teams automate complex workflows and collect structured data with ease.
- [Fillout forms](https://composio.dev/toolkits/fillout_forms) - Fillout forms is an online platform for building and managing forms with a flexible API. It lets you create, distribute, and collect responses from forms with ease.
- [Formdesk](https://composio.dev/toolkits/formdesk) - Formdesk is an online form builder for creating and managing professional forms. It's perfect for collecting data, automating workflows, and integrating form submissions with your favorite services.
- [Formsite](https://composio.dev/toolkits/formsite) - Formsite lets you build online forms and surveys with drag-and-drop simplicity. Capture, manage, and integrate form responses securely for streamlined workflows.
- [Graphhopper](https://composio.dev/toolkits/graphhopper) - GraphHopper is an enterprise-grade Directions API for routing, optimization, and geocoding across multiple vehicle types. It enables fast, reliable route planning and logistics automation for businesses.
- [Hyperbrowser](https://composio.dev/toolkits/hyperbrowser) - Hyperbrowser is a next-generation platform for scalable browser automation. It empowers AI agents to interact with web apps, automate workflows, and handle browser sessions at scale.
- [La Growth Machine](https://composio.dev/toolkits/lagrowthmachine) - La Growth Machine automates multi-channel sales outreach and routine tasks for sales teams. Streamline your workflow and focus on closing more deals.
- [Leverly](https://composio.dev/toolkits/leverly) - Leverly is a workflow automation platform that connects and coordinates actions across your apps. It streamlines repetitive processes so your business runs smoother, faster, and with fewer manual steps.
- [Maintainx](https://composio.dev/toolkits/maintainx) - Maintainx is a cloud-based CMMS for centralizing maintenance data, communication, and workflows. It helps organizations streamline maintenance operations and improve team coordination.

## Frequently Asked Questions

### Do I need my own developer credentials to use TinyFish MCP with Composio?

Yes, TinyFish MCP requires you to configure your own DCR OAuth credentials. Once set up, Composio handles secure credential storage and management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
