Application Development
TinyFish
API integration
Ship Application Development features without building the integration. Full TinyFish API access via Proxy and 40+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with TinyFish
Common scenarios for SaaS companies building TinyFish integrations for their customers.
Embed autonomous web execution in AI copilots
AI agent platforms can give their users a reliable 'take action on the web' primitive by routing goals through TinyFish runs via Truto. Instead of maintaining headless browser infrastructure, you deliver natural-language web automation as a native feature.
Offer authenticated data pulls from portals without APIs
Marketing, procurement, and finance SaaS products can let users pull data from vendor portals, ad networks, and legacy systems that lack public APIs. Truto brokers the TinyFish vault connection and run execution so your users keep credentials in their own password manager.
Ship competitive and brand monitoring as a native feature
PR, pricing, and competitive intelligence platforms can programmatically create TinyFish monitors on behalf of their users and receive webhook alerts when pages or search topics change. Truto handles the connection lifecycle so you can focus on surfacing insights.
Power deep research workflows inside your product
Analytics, consulting, and market intelligence SaaS can expose a 'Research' button that triggers TinyFish research_runs and returns a cited report. Truto standardizes auth and polling so you can embed this without building a research engine.
Bulk enrich records with live web data
CRMs and sales platforms can trigger bulk TinyFish runs against lists of domains to extract hiring signals, pricing, or company data on a schedule. Truto lets you offer this to every customer under their own TinyFish account.
What You Can Build
Ship these features with Truto + TinyFish
Concrete product features your team can ship faster by leveraging Truto’s TinyFish integration instead of building from scratch.
Natural-language web task runner
Let users describe a web task in plain English and execute it via TinyFish runs, surfacing step-by-step screenshots and HTML snapshots as an audit trail.
User-owned vault-backed automation
Allow end users to connect their password manager through TinyFish vault_connections so your product can run authenticated workflows without ever touching their credentials.
Scheduled page and topic monitors
Programmatically create and manage TinyFish monitors from your UI so users can track competitor pages, pricing changes, or brand mentions with webhook-driven alerts.
One-click deep research reports
Expose TinyFish research_runs as a feature that produces fully cited reports from a single query, with cancel and status controls built in.
Bulk web extraction pipelines
Use bulk run creation to process thousands of URLs in parallel for lead enrichment, catalog scraping, or market data collection, with per-run status tracking.
Reusable browser context profiles
Let users complete a one-time 2FA or captcha via a TinyFish setup session, then reuse that browser context profile for all subsequent background automations.
SuperAI
TinyFish AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
delete_a_tiny_fish_browser_context_profile_domain_by_id
Remove one saved domain (its cookies and storage) from a Browser Context Profile. Required: id, profile_id.
create_a_tiny_fish_browser_context_profile_setup_session
Start a temporary setup browser for a Browser Context Profile. Returns session_id and cdp_url: connect a CDP client (Playwright, Puppeteer) to cdp_url, log in, then save with browser_context_profile_setup_sessions.complete before expires_at. Required: profile_id.
tiny_fish_browser_context_profile_setup_sessions_cancel
Cancel a running profile setup session and discard its unsaved state. Required: profile_id, session_id.
tiny_fish_browser_context_profile_setup_sessions_complete
Save a running setup session into its Browser Context Profile: captures cookies, local storage and session storage per domain. Saving again returns the first save's result. Required: profile_id, session_id.
create_a_tiny_fish_browser_context_profile_state
Upload browser state into a Browser Context Profile: cookies, plus optional localStorage and sessionStorage per origin. Required: profile_id, cookies.
list_all_tiny_fish_browser_context_profiles
List Browser Context Profiles: saved logged-in browser state (cookies, local and session storage per domain) that runs reuse via profile_id.
create_a_tiny_fish_browser_context_profile
Create an empty Browser Context Profile. Fill it by logging in through browser_context_profile_setup_sessions.create or by uploading cookies with browser_context_profile_states.create. Required: name.
get_single_tiny_fish_browser_context_profile_by_id
Get a Browser Context Profile and its saved domains. Required: id.
update_a_tiny_fish_browser_context_profile_by_id
Rename a Browser Context Profile, make it the default, or change its proxy country. Required: id.
delete_a_tiny_fish_browser_context_profile_by_id
Delete a Browser Context Profile and its saved state. Required: id.
list_all_tiny_fish_browser_session_usage_records
List remote browser session usage: duration, data transfer, mode and status per session.
create_a_tiny_fish_browser_session
Create a remote browser session. Returns session_id and cdp_url: drive the browser over CDP (Playwright, Puppeteer). Spends wallet credit while it runs; end it with browser_sessions.delete.
delete_a_tiny_fish_browser_session_by_id
Terminate a remote browser session at once. Idempotent: an ended session also returns success. Required: id.
list_all_tiny_fish_fetch_usage_records
List Fetch API usage records: URL, format, status and metadata per fetch.
create_a_tiny_fish_fetch
Fetch up to 10 URLs and get clean extracted content (markdown, html or json), rendering JavaScript pages when needed. Per-URL failures are listed in errors without failing the request. Free within a daily allowance. Required: urls.
create_a_tiny_fish_monitor_run
Run a Monitor now, outside its schedule. Returns the new run. Required: monitor_id.
create_a_tiny_fish_monitor
Create a Monitor that runs on a cron schedule: type fetch watches a page (config url), type search watches a topic (config query). Captures a baseline run at once and can post each run's results to webhook_url. Required: schedule_cron, type, config.
list_all_tiny_fish_monitors
List Monitors (scheduled page or topic watches) with their schedule, status and latest run.
get_single_tiny_fish_monitor_by_id
Get a Monitor with its schedule, status and runs. Required: id.
update_a_tiny_fish_monitor_by_id
Pause or resume a Monitor (send status alone), or edit it (schedule_cron, with optional name, webhook_url and purpose). Required: id.
delete_a_tiny_fish_monitor_by_id
Delete a Monitor and its schedule. Required: id.
create_a_tiny_fish_research_run
Start a research run: TinyFish searches the web, evaluates sources and writes a cited report for query. Returns research_run_id at once; poll research_runs.get (usually several minutes). 2 free completed runs a day, then billed; up to 5 at once. Required: query.
list_all_tiny_fish_research_runs
List saved research runs, newest first, filterable by status, query text and created date range.
get_single_tiny_fish_research_run_by_id
Get a research run: status, query, quick and deep results (the cited report), plan, evidence and per-iteration state. Poll this after research_runs.create. Required: id.
tiny_fish_research_runs_cancel
Cancel a running research run. Idempotent: a finished run returns cancelled false and its current status. Required: research_run_id.
list_all_tiny_fish_run_step_html_snapshots
Get the full-page HTML captured at one step of a run (raw text/html). Only for runs started with capture_config html set to true; the final "Task completed" step has none (404). Required: run_id, step_id.
list_all_tiny_fish_run_step_screenshots
Download the JPEG screenshot captured at one step of a run (binary image/jpeg). Step IDs are in the steps of runs.get; the final "Task completed" step has no screenshot (404). Required: run_id, step_id.
tiny_fish_runs_execute
Run a web automation and wait for it: TinyFish opens url in a real browser, follows the goal and returns the finished run (COMPLETED or FAILED, result JSON). For short tasks only; use runs.create for long ones. Spends wallet credit. Required: url, goal.
create_a_tiny_fish_run
Start a web automation asynchronously and get its run_id at once. TinyFish opens url in a real browser and works through the natural-language goal. Poll runs.get until status is COMPLETED, FAILED or CANCELLED (or set webhook_url); stop it with runs.cancel. Spends wallet credit. Required: url, goal.
tiny_fish_runs_bulk_create
Start up to 100 web automations in one request, each with its own url and goal. Returns their run_ids in order; poll them with runs.bulk_get. Spends wallet credit per run. Required: runs.
list_all_tiny_fish_runs
List automation runs, newest first, filterable by status, goal text and created date range. Each run has run_id, status, goal, result and timing.
tiny_fish_runs_bulk_get
Get up to 100 runs by ID in one request. Found runs are in data; unknown or not-owned IDs are listed in not_found. Runs here omit steps and video_url; use runs.get for those. Required: run_ids.
tiny_fish_runs_bulk_cancel
Cancel up to 100 runs by ID. Returns a result per run (cancelled, or already finished) and the IDs not found. Idempotent. Required: run_ids.
get_single_tiny_fish_run_by_id
Get one automation run: status (PENDING, RUNNING, COMPLETED, FAILED, CANCELLED), goal, result JSON, error, steps, timing and the live streaming_url. Poll this after runs.create. Required: id.
tiny_fish_runs_cancel
Cancel a pending or running automation started with runs.create. Runs from runs.execute can't be cancelled. Required: run_id.
list_all_tiny_fish_search_results
Search the web and get ranked results (title, snippet, url) for query, with optional location, language, domain filters, date ranges and news or research-paper modes. Free within a daily allowance. Required: query.
list_all_tiny_fish_search_usage_records
List Search API usage records: query details, status and result counts.
create_a_tiny_fish_vault_connection
Connect a password manager (1Password service-account token, or Bitwarden client ID, secret and master password) so runs can log in to websites with its credentials. Syncs display-safe item metadata at once. Required: provider.
list_all_tiny_fish_vault_connections
List the password managers (vault providers) connected to TinyFish.
delete_a_tiny_fish_vault_connection_by_id
Disconnect a vault provider and remove its stored enabled items. Required: id.
create_a_tiny_fish_vault_item_sync
Re-sync items from the connected vault providers. Returns the merged items and sync counters.
list_all_tiny_fish_vault_items
List the credential items available from connected vaults (display-safe metadata, no secrets). Pass their IDs as credential_item_ids when starting a run with use_vault.
list_all_tiny_fish_wallets
Get the wallet: available balance, currency, auto-reload settings, per-product rates and any pending top-up. Accounts on legacy credit plans get 404 FEATURE_NOT_AVAILABLE.
Why Truto
Why use Truto’s MCP server for TinyFish
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 950+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with TinyFish in under an hour. No boilerplate, no maintenance burden.
Link your customer’s TinyFish account
Use Truto’s frontend SDK to connect your customer’s TinyFish account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call TinyFish
Truto’s Proxy API is a 1-to-1 mapping of the TinyFish API. You call us, we call TinyFish, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate TinyFish’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about TinyFish on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How do end users authenticate their TinyFish account?
Through Truto's connection flow, your users provide their TinyFish API credentials once. Truto securely stores and injects them for every API call, so you never handle keys directly.
Can users connect their own password manager for authenticated runs?
Yes. TinyFish supports vault connections (e.g., 1Password, Bitwarden) via create_a_tiny_fish_vault_connection, and Truto exposes the full lifecycle including listing vault items and syncing them into runs.
How do we handle long-running automations like runs and research_runs?
TinyFish operations are asynchronous. You create a run or research_run, then poll the get-by-id endpoint or listen for completion. Truto normalizes the request/response shape so you can wire up webhooks or polling in your product.
Can we execute runs in bulk?
Yes. Truto exposes tiny_fish_runs_bulk_create, tiny_fish_runs_bulk_get, and tiny_fish_runs_bulk_cancel so you can fan out hundreds or thousands of URL+goal pairs and manage them as a batch.
How do we handle 2FA or captchas on target sites?
Use browser context profiles. Create a setup session via create_a_tiny_fish_browser_context_profile_setup_session, let the user solve the challenge once in the CDP URL, complete the session, and reuse the saved profile for future runs.
Can we audit what happened during an automated run?
Yes. Truto surfaces list_all_tiny_fish_run_step_screenshots and list_all_tiny_fish_run_step_html_snapshots so you can show users (or your compliance team) exactly what the agent saw and did at each step.
Is this integration available today?
TinyFish is available on Truto as a native integration covering runs, research_runs, monitors, fetch, browser_sessions, browser_context_profiles, and vault_connections. If you need additional endpoints or a unified abstraction across similar providers, Truto can build it on request.
TinyFish
Get TinyFish integrated into your app
Our team understands what it takes to make a TinyFish integration successful. A short, crisp 30 minute call with folks who understand the problem.