The Tinyfish MCP connector routes your AI agent's tool calls to Tinyfish's own MCP server through Scalekit. Each user signs in to Tinyfish once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 44 tools.
- Tools
- 44
- What they doRead · write · destructive
- 20 · 18 · 620 read18 write6 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Automate websites: run multi-step tasks on a site from a plain-language goal, including clicks, form fills, and navigation
- Fetch page content: render up to 10 URLs in a real browser and return clean markdown, HTML, or JSON
- Search the web: get structured results with titles, snippets, and URLs, targeted by location and language
- Track automation runs: check status, view step-by-step traces with screenshots, and cancel runs
- Run browser sessions: start remote Chrome sessions to drive with Playwright, Puppeteer, or Selenium, and close them
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Tinyfish MCP connection
In AgentKit > Connections, create a Tinyfish MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Tinyfish MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'tinyfishmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Tinyfish MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'tinyfishmcp_get_wallet',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "tinyfishmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Tinyfish MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="tinyfishmcp_get_wallet",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_tooltinyfishmcp_batch_statusCheck the status, result, and error for up to 8 automation runs by their IDs.Read-onlyBatch Status
Check the status, result, and error for up to 8 automation runs by their IDs.
Inputs
run_idsarrayrequired- List of run IDs to cancel or check status for (up to 8).
tinyfishmcp_discover_runReturn the run ID of the currently active automation for the given session, or null if no run is in progress.Read-onlyDiscover Run
Return the run ID of the currently active automation for the given session, or null if no run is in progress.
Inputs
session_idstringrequired- The browser session ID to look up the running automation for.
tinyfishmcp_fetch_contentRender up to 10 URLs in a real browser and return clean structured content (markdown, HTML, or JSON) plus metadata like title, author, and publish date.Read-onlyFetch Content
Render up to 10 URLs in a real browser and return clean structured content (markdown, HTML, or JSON) plus metadata like title, author, and publish date. Fetches run in parallel; per-URL errors are reported without blocking the rest.
Inputs
formatstringrequired- Output format for extracted content. "markdown" (default) is ideal for LLM consumption. "html" returns cleaned semantic HTML. "json" returns a structured document tree.one of
markdownhtmljsondefaultmarkdown iframe_linksbooleanrequired- Extract the src URLs of <iframe> elements on each page. Useful when a page embeds its main content in a frame (job boards, booking widgets, document viewers): fetch the returned URL to read the embedded content. Iframe links are returned as absolute, deduplicated URLs in the iframe_links array of each result. Script-injected iframes are only present when the page was rendered in a browser.default
false image_linksbooleanrequired- Extract all image URLs (<img src>) from each page. Useful for finding visual content or media assets. Image links are returned as absolute URLs in the image_links array of each result.default
false linksbooleanrequired- Extract all outbound links (<a href>) from each page. Useful for discovering related pages or navigating to specific content. Links are returned as absolute URLs in the links array of each result.default
false page_metadatabooleanrequired- Return page-head metadata for each page in the page_metadata object of each result: canonical URL, favicon, robots directive, generator, viewport, keywords, all Open Graph (og), Twitter card (twitter), and article tags, and remaining named meta tags under `other`. Useful for SEO/technical audits and link-preview generation.default
false urlsarrayrequired- Array of URLs to fetch (1-10). All URLs are fetched in parallel. Each URL is processed independently — if one fails, others still return successfully. Errors are reported per-URL in the errors array.
exclude_selectorsarray- Array of CSS selectors (1-20 entries, each 1-1000 characters) for elements to remove before extraction — applied before `include_selectors` scopes what remains, so it also prunes inside selected regions. Entries may themselves use CSS comma-grouping. Entries that match nothing are a no-op, never an error, but URLs that resolve to direct PDF/CSV downloads fail with `selector_unsupported`. Invalid CSS selector syntax is rejected with a 422. Applied post-fetch: caching and routing are unchanged.
if_modified_sincestring- Last-Modified validator from a prior fetch of this URL, forwarded verbatim as the If-Modified-Since header on the origin request. Only valid with a single URL — combining with a batch of URLs returns a 400. tf-fetch does not persist validators; the caller owns replaying them.
if_none_matchstring- ETag validator from a prior fetch of this URL, forwarded verbatim as the If-None-Match header on the origin request. Only valid with a single URL — combining with a batch of URLs returns a 400. tf-fetch does not persist validators; the caller owns replaying them.
include_etag_and_last_modifiedboolean- Opt-in to receiving `etag` / `last_modified` validators (and `not_modified` detection) on each result. Defaults to false — tf-fetch omits these fields unless requested. Independent of `if_none_match` / `if_modified_since`: works with a single URL or a batch.
include_selectorsarray- Array of CSS selectors (1-20 entries, each 1-1000 characters) that scope extracted content (`text`, `links`, `image_links`) to elements matching ANY entry, concatenated in document order. Tag selectors cover semantic sections (`main`, `article`, `nav`); entries may themselves use CSS comma-grouping. Selected content is returned verbatim in the requested format (scripts/styles stripped) — automatic boilerplate removal is bypassed. Page-level metadata (`title`, `description`, `language`, `author`, `published_date`) still comes from the full document. When some entries match and others do not, the URL still succeeds and the misses are reported in the result's `unmatched_selectors`. When no entry matches anything, that URL fails with the per-URL error code `selector_not_matched` (carrying `unmatched_selectors` and `candidate_selectors` retry hints) — never a silent full-page fallback. URLs that resolve to direct PDF/CSV downloads fail with `selector_unsupported`. Invalid CSS selector syntax is rejected with a 422. Applied post-fetch: caching and routing are unchanged.
per_url_timeout_msinteger- Wall-clock timeout budget in milliseconds applied independently to each URL. If one URL exceeds this budget, it returns a per-URL timeout error while other URLs in the same request continue.
purposestring- Why these URLs are being fetched — the underlying goal or task the content will be used for. Used to better tailor fetching and extraction to your intent.
ttlinteger- Caller freshness tolerance in seconds for the cached entry. Omit (default) for unlimited tolerance — any cached entry is acceptable. Set to 0 to prefer a live fetch; a cached entry is still served if the origin's Cache-Control: max-age covers its age, or the host is in the small allowlist of operator-pinned never-expire domains. Set to N > 0 to accept a cached entry whose age is below N; the upstream Cache-Control: max-age and the never-expire allowlist may extend (never shorten) this tolerance.
tinyfishmcp_get_datasetWaits up to about 25 seconds for a dataset started by create_dataset or populate_dataset, then returns its status, row count and the first rows.Read-onlyGet Dataset
Waits up to about 25 seconds for a dataset started by create_dataset or populate_dataset, then returns its status, row count and the first rows. When output_ready is true the rows stand; call get_dataset_rows for more pages. While status is populating, call get_dataset again with the same dataset_id; filling usually takes a few minutes. Do not create another dataset or cancel because it is slow.
Inputs
dataset_idstringrequired- dataset_id returned by create_dataset or list_datasets.
waitboolean- Wait up to about 25 seconds for the run to finish before answering.default
true
tinyfishmcp_get_dataset_rowsOne page of rows from a dataset, in column order.Read-onlyGet Dataset Rows
One page of rows from a dataset, in column order. Use after get_dataset reports output_ready, or to read past the first rows; pass the previous next_cursor as after.
Inputs
dataset_idstringrequired- dataset_id returned by create_dataset or list_datasets.
afterstring- The previous page's next_cursor.
limitinteger- Rows per page, 1 to 500.default
100
tinyfishmcp_get_deep_researchWaits up to about 25 seconds for a run started by start_deep_research, then returns its status.Read-onlyGet Deep Research
Waits up to about 25 seconds for a run started by start_deep_research, then returns its status. When output_ready is true, the result has the cited report. While the run is still going, call get_deep_research again with the same research_run_id; research usually takes several minutes. Do not start a new run or cancel because it is slow.
Inputs
research_run_idstringrequired- Id returned by start_deep_research.
tinyfishmcp_get_monitorOnly use when the user asks for one Monitor.Read-onlyGet Monitor
Only use when the user asks for one Monitor. Requires monitor_id from list_monitors or create_monitor.
Inputs
monitor_idstringrequired- Id returned by list_monitors or create_monitor.
tinyfishmcp_get_runRetrieve status, result, error, and metadata for a specific automation run by its ID.Read-onlyGet Run
Retrieve status, result, error, and metadata for a specific automation run by its ID.
Inputs
idstringrequired- The unique run ID to retrieve or cancel.
tinyfishmcp_get_search_usageList past search usage records with optional filtering by date range and status, for auditing query history and credit consumption.Read-onlyGet Search Usage
List past search usage records with optional filtering by date range and status, for auditing query history and credit consumption.
Inputs
limitintegerrequired- No description.default
100 pageintegerrequired- No description.default
1 end_beforestring- No description.
ownerstring- Whose records: me (default for a personal key) or team, made by the team's workflow keys (the only choice for a workflow key)one of
meteam start_afterstring- No description.
statusstring- No description.one of
completedfailed
tinyfishmcp_get_stepsRetrieve the step-by-step execution trace for an automation run, including screenshots captured at each step.Read-onlyGet Steps
Retrieve the step-by-step execution trace for an automation run, including screenshots captured at each step.
Inputs
runIdstringrequired- The unique run ID to retrieve steps or poll status for.
tinyfishmcp_get_walletRead-only.Read-onlyGet Wallet
Read-only. Returns the caller's current wallet balance, auto-reload state, per-product contract rates, and any in-flight top-up. Wallet top-ups and auto-reload changes happen in the dashboard, not through this tool.
Inputs
This tool takes no inputs.
tinyfishmcp_guide_next_stepReturns the next interactive TinyFish onboarding step based on the user's real usage.Read-onlyOnboarding: Next Step
Returns the next interactive TinyFish onboarding step based on the user's real usage. Ask for the user's input and wait before running the suggested tool.
Inputs
This tool takes no inputs.
tinyfishmcp_list_browser_sessionsList browser sessions with optional filtering by session ID, time range, and status, returning duration, data usage, and connection metadata.Read-onlyList Browser Sessions
List browser sessions with optional filtering by session ID, time range, and status, returning duration, data usage, and connection metadata.
Inputs
limitintegerrequired- Page size (1-1000, default 100)default
100 pageintegerrequired- Page number (default 1)default
1 end_beforestring- Sessions created before this ISO datetime
session_idstring- Filter by specific session ID
start_afterstring- Sessions created after this ISO datetime
statusstring- Filter by session statusone of
runningended
tinyfishmcp_list_datasetsThe caller's datasets, newest first, with status and row counts.Read-onlyList Datasets
The caller's datasets, newest first, with status and row counts. Use to find a dataset_id the user refers to by name.
Inputs
cursorstring- The previous page's next_cursor.
limitinteger- Datasets per page, 1 to 100.default
20
tinyfishmcp_list_deep_researchLists the user's deep research runs, newest first, with status and report_url.Read-onlyList Deep Research
Lists the user's deep research runs, newest first, with status and report_url. Filter by status, query text or created_after/created_before; page with cursor from pagination.next_cursor. Use when the user asks about an earlier report, or before starting a run that may repeat one; then call get_deep_research with its research_run_id.
Inputs
created_afterstring- Filter runs created after this ISO 8601 timestamp
created_beforestring- Filter runs created before this ISO 8601 timestamp
cursorstring- Cursor for pagination (from previous response). Must be replayed with the same sort_direction used to generate it.
limitinteger- Maximum number of results to return (1-100)default
20 querystring- Filter by query text (case-insensitive partial match)
sort_directionstring- Sort order by created_atone of
ascdescdefaultdesc statusstring- Filter by research run statusone of
RUNNINGCOMPLETEDFAILEDCANCELLEDTIMED_OUTQUEUED
tinyfishmcp_list_fetch_usageList past fetch content requests with optional filtering by date range and status.Read-onlyList Fetch Usage
List past fetch content requests with optional filtering by date range and status. Does not include the fetched text content.
Inputs
limitintegerrequired- Results per page (1-100, default 20)default
20 pageintegerrequired- Page number (default 1)default
1 end_beforestring- Filter: created before this ISO datetime
ownerstring- Whose records: me (default for a personal key) or team, made by the team's workflow keys (the only choice for a workflow key)one of
meteam start_afterstring- Filter: created after this ISO datetime
statusstring- Filter by result statusone of
completedfailed
tinyfishmcp_list_monitorsOnly use when the user asks which Monitors they have.Read-onlyList Monitors
Only use when the user asks which Monitors they have. Returns each Monitor id, type, target, schedule, and status.
Inputs
This tool takes no inputs.
tinyfishmcp_list_profilesLists Browser Context Profiles, including which one is the default.Read-onlyList Profiles
Lists Browser Context Profiles, including which one is the default. signed_in_sites are sites where a TinyFish setup saw the user sign in, or the user said they signed in when saving, and whose cookies are still saved; a sign-in may have expired since its claimed_at. For a site that needs sign-in, prefer a profile whose signed_in_sites includes that site and pass its exact profile_id. An entry covers its subdomains (google.com covers docs.google.com), and some sign-ins are recorded under the provider's site: microsoftonline.com covers office.com, microsoft365.com and sharepoint.com, and x.com covers twitter.com. An entry does not show which account or tenant. A profile that only matches by name is not confirmed signed in: ask the user whether it is before running on it, and call start_profile_setup_session for it only if they say so.
Inputs
This tool takes no inputs.
tinyfishmcp_list_runsList automation runs with optional filtering by status, goal text, and date range, with cursor-based pagination.Read-onlyList Runs
List automation runs with optional filtering by status, goal text, and date range, with cursor-based pagination.
Inputs
limitintegerrequired- Maximum number of results to return (1-100)default
20 sort_directionstringrequired- Sort order by created_atone of
ascdescdefaultdesc created_afterstring- Filter runs created after this ISO 8601 timestamp
created_beforestring- Filter runs created before this ISO 8601 timestamp
cursorstring- Cursor for pagination (from previous response)
goalstring- Filter runs by goal text (case-insensitive partial match)
ownerstring- Whose records: me (default for a personal key) or team, made by the team's workflow keys (the only choice for a workflow key)one of
meteam statusstring- Filter by run statusone of
PENDINGRUNNINGCOMPLETEDFAILEDCANCELLED
tinyfishmcp_poll_statusReturn the current status, step count, and progress for an automation run.Read-onlyPoll Status
Return the current status, step count, and progress for an automation run.
Inputs
runIdstringrequired- The unique run ID to retrieve steps or poll status for.
tinyfishmcp_cancel_dataset_runOnly use when the user explicitly asks to stop a dataset run.WriteCancel Dataset Run
Only use when the user explicitly asks to stop a dataset run. Never cancel because filling is slow or get_dataset returned without output_ready; keep polling instead. Rows already landed stay.
Inputs
dataset_idstringrequired- dataset_id returned by create_dataset or list_datasets.
run_idstringrequired- run_id from the dataset's run.
tinyfishmcp_cancel_deep_researchOnly use when the user explicitly asks to stop a deep research run.WriteCancel Deep Research
Only use when the user explicitly asks to stop a deep research run. Never cancel because research is slow or get_deep_research returned without a report; keep polling instead. Idempotent: finished runs return their current status.
Inputs
research_run_idstringrequired- Id returned by start_deep_research.
tinyfishmcp_cancel_monitorOnly use when the user explicitly asks to delete or cancel a Monitor.WriteCancel Monitor
Only use when the user explicitly asks to delete or cancel a Monitor. Removes it and its schedule.
Inputs
monitor_idstringrequired- Id returned by list_monitors or create_monitor.
tinyfishmcp_cancel_profile_setup_sessionCloses a setup session and discards anything not yet saved.WriteCancel Profile Setup Session
Closes a setup session and discards anything not yet saved.
Inputs
profile_idstringrequired- Browser Context Profile ID
session_idstringrequired- session_id returned by start_profile_setup_session
tinyfishmcp_create_browser_sessionCreate a remote stealth Chrome browser session in the cloud and return CDP connection details (session_id, cdp_url) for use with Playwright, Puppeteer, or Selenium.WriteCreate Browser Session
Create a remote stealth Chrome browser session in the cloud and return CDP connection details (session_id, cdp_url) for use with Playwright, Puppeteer, or Selenium. Sessions auto-terminate after the configured inactivity timeout.
Inputs
proxy_configobject- Proxy for the session. Omit to use the TinyFish proxy in the US.
timeout_secondsinteger- Inactivity timeout in seconds (5-86400). Capped by your plan limit.
urlstring- Navigate to this URL after session creation
tinyfishmcp_create_datasetSlow (minutes) and billed per row.WriteCreate Dataset
Slow (minutes) and billed per row. Only use when the user asks for a dataset, table, or list of many entities with the same fields (companies, products, places, people), each row found on the web. Not for a single fact, one page, or a question search and fetch_content can answer. Give a prompt, or a spec from plan_dataset when the user reviewed the columns. Returns dataset_id and run_id at once; then call get_dataset, which waits and returns the rows. Do not create a second dataset for the same request.
Inputs
promptstring- What the dataset should contain, in plain English, with any scope the user gave.
specobject- A schema to use as is, such as one returned by plan_dataset.
target_rowsinteger- Rows to fill the dataset to, 1 to 250. More rows take longer and cost more.default
100
tinyfishmcp_create_monitorUse when the user asks to monitor a webpage for changes or subscribe to updates about a web topic.WriteCreate Monitor
Use when the user asks to monitor a webpage for changes or subscribe to updates about a web topic. Set type to fetch for a known URL or search for a topic. Creates the recurring Monitor and immediately returns its baseline result. Each completed run, including the baseline, is billed $0.005 to the wallet plus its one Search or Fetch, billed like a direct call; failed runs are free.
Inputs
configobjectrequired- Set query for a search Monitor or url for a fetch Monitor.
schedule_cronstringrequired- Five-field cron expression, evaluated in UTC by default. Prefix with `CRON_TZ=<IANA zone>` (e.g. `CRON_TZ=America/New_York 0 9 * * 1-5`) to run in a timezone.
typestringrequired- Use search for a topic or fetch for a known webpage URL.one of
searchfetch namestring- Optional name for this Monitor.
purposestring- Optional plain-language description of the change that matters, e.g. "the price drops".
webhook_urlstring- Optional URL that receives each scheduled run's results.
tinyfishmcp_create_profileCreates a Browser Context Profile.WriteCreate Profile
Creates a Browser Context Profile. Pass set_as_default when later runs should use it automatically.
Inputs
namestringrequired- No description.
proxy_country_codestring- No description.
set_as_defaultboolean- No description.
tinyfishmcp_pause_monitorOnly use when the user asks to pause a Monitor.WritePause Monitor
Only use when the user asks to pause a Monitor. Stops its schedule until resume_monitor.
Inputs
monitor_idstringrequired- Id returned by list_monitors or create_monitor.
tinyfishmcp_plan_datasetDesigns the columns for a dataset prompt without creating anything.WritePlan Dataset
Designs the columns for a dataset prompt without creating anything. Use when the user wants to see or edit the columns first; pass the returned spec to create_dataset. Otherwise call create_dataset directly with the prompt.
Inputs
promptstringrequired- What the dataset should contain, in plain English, with any scope the user gave.
tinyfishmcp_populate_datasetFills an existing dataset again, to add rows up to a new target_rows or to rebuild it with reset.WritePopulate Dataset
Fills an existing dataset again, to add rows up to a new target_rows or to rebuild it with reset. Refused while a run is live. Returns run_id; then call get_dataset.
Inputs
dataset_idstringrequired- dataset_id returned by create_dataset or list_datasets.
resetboolean- Empty the dataset before filling it.default
false target_rowsinteger- Rows to fill the dataset to, 1 to 250. More rows take longer and cost more.
tinyfishmcp_resume_monitorOnly use when the user asks to resume a paused Monitor and start its schedule again.WriteResume Monitor
Only use when the user asks to resume a paused Monitor and start its schedule again.
Inputs
monitor_idstringrequired- Id returned by list_monitors or create_monitor.
tinyfishmcp_run_monitorOnly use when the user asks to check a Monitor immediately.WriteRun Monitor
Only use when the user asks to check a Monitor immediately. Runs once and returns that result.
Inputs
monitor_idstringrequired- Id returned by list_monitors or create_monitor.
tinyfishmcp_save_profile_setup_sessionSaves cookies and browser storage from a setup session onto the profile, then closes the browser.WriteSave Profile Setup Session
Saves cookies and browser storage from a setup session onto the profile, then closes the browser. Pass signed_in_sites with the sites the user says they signed into; never add sites they did not mention. Follow any next_step it returns.
Inputs
profile_idstringrequired- Browser Context Profile ID
session_idstringrequired- session_id returned by start_profile_setup_session
signed_in_sitesarray- Sites the user said they signed into during this setup, like ["facebook.com"]. Only sites the user named; never guess. A site is recorded only if this save wrote its cookies.
tinyfishmcp_searchSearch the web and return structured results with titles, snippets, and URLs.WriteSearch
Search the web and return structured results with titles, snippets, and URLs. Supports geo-targeting and language filtering.
Inputs
querystringrequired- Search query to run.
after_datestring- Return results after this date (YYYY-MM-DD). Do not combine with recency_minutes.
before_datestring- Return results before this date (YYYY-MM-DD). Do not combine with recency_minutes.
domain_typestring- Type of search to perform: "web" for standard results, "news" for news articles, "research_paper" for academic papers. Defaults to "web".one of
webnewsresearch_paper exclude_domainsstring- Comma-separated list of domains to exclude from results.
fetchstring- Fetch mode for search results. Accepted values: none, snippet, full.
include_domainsstring- Comma-separated list of domains to restrict results to.
include_thumbnailstring- Set to true to include thumbnail images in search results.one of
truefalse languagestring- Language code to filter search results (e.g. en).
locationstring- Location to filter search results (e.g. United States).
pageinteger- Page number for paginated results.
pub_year_maxinteger- Return research papers published on or before this year (0-9999, inclusive). Only supported for domain_type=research_paper.
pub_year_mininteger- Return research papers published on or after this year (0-9999, inclusive). Only supported for domain_type=research_paper.
purposestring- Why this search is being run — the underlying goal or task the results will be used for. Used to better rank results against your intent.
recency_minutesinteger- Return results from the past N minutes (1 to 5,256,000). Do not combine with after_date or before_date.
tinyfishmcp_start_deep_researchSlow (several minutes) and billed per run.WriteStart Deep Research
Slow (several minutes) and billed per run. Only use when the user explicitly asks for deep research, or a cited report, literature review, survey, or landscape, or the question needs synthesis across many sources that a few search and fetch_content calls cannot cover (market or competitor landscapes, literature reviews, multi-factor comparisons across many options). Not for single facts, definitions, current news, docs lookups, "what is"/"compare X vs Y" questions, or reading known URLs: use search and fetch_content for those. Starts an async run and returns research_run_id; then call get_deep_research. Mode max: deeper research with a larger budget, only when the user asks for maximum depth or an exhaustive report; slower and costs more. deep (default) for everything else.
Inputs
querystringrequired- The research question, with any scope or constraints the user gave.
modestring- max: deeper research with a larger budget, only when the user asks for maximum depth or an exhaustive report; slower and costs more. deep (default) for everything else.one of
deepmaxdefaultdeep
tinyfishmcp_start_profile_setup_sessionOpens a live browser so the user can sign in for later runs.WriteStart Profile Setup Session
Opens a live browser so the user can sign in for later runs. Return viewer_url and have them sign in by hand. After they finish, call save_profile_setup_session with the same profile_id and session_id. Do not use run_web_automation as the place where the user types a password. Optional url opens that site first.
Inputs
profile_idstringrequired- Profile to open for manual sign-in
timeout_secondsstring- Inactivity timeout in seconds (5–86400). If omitted, null, or greater than your plan maximum, the plan maximum is used.
urlstring- Target URL the browser session will navigate to on startup. Bare domains (e.g. tinyfish.ai) are automatically prefixed with https://. If omitted, the browser starts at about:blank.
tinyfishmcp_top_up_walletAdds funds to the caller's TinyFish wallet, paid by the agent over the Machine Payments Protocol (MPP).WriteTop Up Wallet
Adds funds to the caller's TinyFish wallet, paid by the agent over the Machine Payments Protocol (MPP). Two calls: the first returns a payment challenge; pay it with an MPP wallet, then call again with the same amount and either payment_credential or a Stripe shared payment token (spt) plus the challenge. Offer it when a run is refused for insufficient wallet balance and you have an MPP wallet; call it only after the user agrees to the amount ($10 minimum). settled means the wallet is credited. pending means the card was charged and the credit is landing: do not pay again. unconfirmed means Stripe did not confirm the payment: do not pay again on your own, and if the balance has not increased after 10 minutes, ask the user before starting a new top-up. Treat a paid call that errors or times out as unconfirmed.
Inputs
amountstringrequired- USD amount to add, e.g. "25.00". Keep it the same on the retry.
challengestring- The challenge a previous call returned, unchanged. Required with spt.
payment_credentialstring- MPP credential ("Payment <base64url>") for the challenge a previous call returned. Omit on the first call to get the challenge.
sptstring- Instead of payment_credential: a Stripe shared payment token issued for the challenge.
tinyfishmcp_batch_cancelCancel up to 8 running or pending automation runs by their IDs.DestructiveBatch Cancel
Cancel up to 8 running or pending automation runs by their IDs. Already-terminal runs are returned with their current status.
Inputs
run_idsarrayrequired- List of run IDs to cancel or check status for (up to 8).
tinyfishmcp_cancel_runCancel a running or pending automation run by its ID.DestructiveCancel Run
Cancel a running or pending automation run by its ID. Returns current status without error if the run has already reached a terminal state.
Inputs
idstringrequired- The unique run ID to retrieve or cancel.
tinyfishmcp_close_browser_sessionOnly use when the user explicitly wants to stop or close a remote browser session.DestructiveClose Browser Session
Only use when the user explicitly wants to stop or close a remote browser session. Closes a session by ID. Idempotent — already-ended sessions return success.
- Idempotent
Inputs
session_idstringrequired- ID of the browser session to close
tinyfishmcp_delete_datasetPermanently deletes a dataset and its rows.DestructiveDelete Dataset
Permanently deletes a dataset and its rows. Only when the user explicitly asks. Refused while a run is live: cancel it first.
Inputs
dataset_idstringrequired- dataset_id returned by create_dataset or list_datasets.
tinyfishmcp_run_web_automationExecute multi-step web automation on a URL using a natural language goal — clicks, form fills, and navigation.DestructiveRun Web Automation
Execute multi-step web automation on a URL using a natural language goal — clicks, form fills, and navigation. If the tool times out, the run is still executing on the server; use get_run or list_runs to check status.
Inputs
goalstringrequired- Natural language description of what to accomplish on the website
session_idstringrequired- A unique UUID v4 identifying this request. IMPORTANT: You MUST generate a new, random UUID for every single call — never reuse a previous value or the example. Reusing a session_id will break concurrent sessions.
urlstringrequired- Target website URL to automate
agent_configobject- Agent behavior configuration
api_integrationstring- Name of the integration making this API call (e.g., "dify", "zapier", "n8n"). Used for analytics.
browser_profilestring- Browser profile for execution. LITE uses standard browser, STEALTH uses anti-detection browser.one of
litestealth capture_configobject- Configure which data to capture during the run.
credential_item_idsarray- Scope vault credentials to specific credential URIs. Requires use_vault to be true. If omitted with use_vault: true, all enabled items are used.
feature_flagsobject- Feature flags to enable for this run
output_schemaobject- Optional provider-supported structured-output schema subset for the run result. Unsupported fields are rejected before the request is accepted.
profile_idstring- Browser Context Profile ID to use when use_profile is true.
proxy_configobject- Proxy configuration
use_profileboolean- Opt-in to the default Browser Context Profile if Browser Context Profiles are enabled; legacy callers are silently ignored when the profiles feature is disabled. Returns 400 when enabled but no default profile is set.
use_vaultboolean- Opt-in to vault credentials for this run. When true, enabled vault items are included. Defaults to false.
webhook_urlstring- HTTPS URL to receive webhook notifications for run lifecycle events. Must use HTTPS.
tinyfishmcp_run_web_automation_asyncStart a single web automation in the background and return the run ID immediately without waiting for completion.DestructiveRun Web Automation Async
Start a single web automation in the background and return the run ID immediately without waiting for completion. Poll with get_run every 30–60 seconds.
Inputs
goalstringrequired- Natural language description of what to accomplish on the website
session_idstringrequired- A unique UUID v4 identifying this request. IMPORTANT: You MUST generate a new, random UUID for every single call — never reuse a previous value or the example. Reusing a session_id will break concurrent sessions.
urlstringrequired- Target website URL to automate
agent_configobject- Agent behavior configuration
api_integrationstring- Name of the integration making this API call (e.g., "dify", "zapier", "n8n"). Used for analytics.
browser_profilestring- Browser profile for execution. LITE uses standard browser, STEALTH uses anti-detection browser.one of
litestealth capture_configobject- Configure which data to capture during the run.
credential_item_idsarray- Scope vault credentials to specific credential URIs. Requires use_vault to be true. If omitted with use_vault: true, all enabled items are used.
feature_flagsobject- Feature flags to enable for this run
output_schemaobject- Optional provider-supported structured-output schema subset for the run result. Unsupported fields are rejected before the request is accepted.
profile_idstring- Browser Context Profile ID to use when use_profile is true.
proxy_configobject- Proxy configuration
use_profileboolean- Opt-in to the default Browser Context Profile if Browser Context Profiles are enabled; legacy callers are silently ignored when the profiles feature is disabled. Returns 400 when enabled but no default profile is set.
use_vaultboolean- Opt-in to vault credentials for this run. When true, enabled vault items are included. Defaults to false.
webhook_urlstring- HTTPS URL to receive webhook notifications for run lifecycle events. Must use HTTPS.
No tools match.