You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(tinyfish): support Browser Context Profiles on agent runs (#7483)
* feat(tinyfish): support Browser Context Profiles on agent runs
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ej1gsFPVzN5xZZ3QzvK8bD
* fix(tinyfish): keep profile activation user-controlled and switch-safe
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ej1gsFPVzN5xZZ3QzvK8bD
* chore(tinyfish): name the real producer of a serialized switch value
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ej1gsFPVzN5xZZ3QzvK8bD
* fix(tinyfish): declare the nullable profile metadata fields nullable
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ej1gsFPVzN5xZZ3QzvK8bD
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: apps/docs/content/docs/integrations/tinyfish.mdx
+30-3Lines changed: 30 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,8 @@ With TinyFish in Sim, you can:
23
23
24
24
-**Automate any site, API or not**: Log into vendor portals, legacy ERPs, and internal tools that never shipped an API, and pull the data out.
25
25
-**Get typed results, not scraped HTML**: Supply a JSON Schema in **Output Schema** and TinyFish holds the agent to it, re-prompting on mismatch and reporting every field that did not match in `schemaValidation`.
26
-
-**Survive bot detection**: Switch **Browser Profile** to `stealth` for anti-detection, and enable the Tetra proxy with a country when the page is geo-restricted.
26
+
-**Survive bot detection**: Switch **Browser Engine** to `stealth` for anti-detection, and enable the Tetra proxy with a country when the page is geo-restricted.
27
+
-**Stay logged in between runs**: Enable **Use Browser Profile** to start a run from a Browser Context Profile — saved browser state you log into once on TinyFish. **List Browser Profiles** returns the ids to choose from; leaving the id empty uses your default profile. Pair it with the vault so an expired session can be repaired.
27
28
-**Log in safely**: Connect a password manager to TinyFish's vault, then enable **Use Vault Credentials** and scope a run to specific credential URIs. **List Vault Items** returns those URIs as display-safe metadata — labels, domains, field names — so credentials never travel through the workflow.
28
29
-**Run work that outlives a step**: **Start Agent Run** queues an automation and returns a run ID immediately; **Get Run**, **Cancel Run**, and **List Runs** track it afterwards, and a webhook URL can notify you on completion.
29
30
-**Read the live web cheaply**: Pair **Search** and **Fetch URLs** to gather current sources before an agent writes or answers.
@@ -74,14 +75,16 @@ Run a TinyFish web agent against a website and wait for it to finish, returning
74
75
| --------- | ---- | -------- | ----------- |
75
76
|`url`| string | Yes | Target website URL the agent starts on |
76
77
|`goal`| string | Yes | Natural-language description of what to accomplish on the website |
77
-
|`browserProfile`| string | No | Browser engine: "lite" \(standard\) or "stealth" \(anti-detection\)|
78
+
|`browserProfile`| string | No | Browser engine: "lite" \(standard\) or "stealth" \(anti-detection\). Not a Browser Context Profile — use useProfile for saved logins|
78
79
|`agentMode`| string | No | Agent behavior: "default" or "strict" \(fail fast\)|
79
80
|`maxSteps`| number | No | Maximum tool-call steps before the agent stops \(1-500, default 150\)|
80
81
|`outputSchema`| json | No | JSON Schema draft-07 contract the run result must satisfy |
81
82
|`proxyEnabled`| boolean | No | Route the run through TinyFish’s Tetra proxy |
82
83
|`proxyCountryCode`| string | No | Proxy country: US, GB, CA, DE, FR, JP, or AU |
83
84
|`useVault`| boolean | No | Let the run use credentials from the connected TinyFish vault |
84
85
|`credentialItemIds`| string | No | Comma-separated vault credential URIs to scope the run to |
86
+
|`useProfile`| boolean | No | Start the run from a saved Browser Context Profile, reusing the logged-in session stored in it |
87
+
|`profileId`| string | No | Browser Context Profile to start from, such as "prof_abc123". Requires useProfile; omit to use the account default |
85
88
|`apiKey`| string | Yes | TinyFish API key |
86
89
87
90
#### Output
@@ -120,14 +123,16 @@ Queue a TinyFish web agent run and return its run ID immediately, without waitin
120
123
| --------- | ---- | -------- | ----------- |
121
124
|`url`| string | Yes | Target website URL the agent starts on |
122
125
|`goal`| string | Yes | Natural-language description of what to accomplish on the website |
123
-
|`browserProfile`| string | No | Browser engine: "lite" \(standard\) or "stealth" \(anti-detection\)|
126
+
|`browserProfile`| string | No | Browser engine: "lite" \(standard\) or "stealth" \(anti-detection\). Not a Browser Context Profile — use useProfile for saved logins|
124
127
|`agentMode`| string | No | Agent behavior: "default" or "strict" \(fail fast\)|
125
128
|`maxSteps`| number | No | Maximum tool-call steps before the agent stops \(1-500, default 150\)|
126
129
|`outputSchema`| json | No | JSON Schema draft-07 contract the run result must satisfy |
127
130
|`proxyEnabled`| boolean | No | Route the run through TinyFish’s Tetra proxy |
128
131
|`proxyCountryCode`| string | No | Proxy country: US, GB, CA, DE, FR, JP, or AU |
129
132
|`useVault`| boolean | No | Let the run use credentials from the connected TinyFish vault |
130
133
|`credentialItemIds`| string | No | Comma-separated vault credential URIs to scope the run to |
134
+
|`useProfile`| boolean | No | Start the run from a saved Browser Context Profile, reusing the logged-in session stored in it |
135
+
|`profileId`| string | No | Browser Context Profile to start from, such as "prof_abc123". Requires useProfile; omit to use the account default |
131
136
|`apiKey`| string | Yes | TinyFish API key |
132
137
|`webhookUrl`| string | No | HTTPS URL notified when the run completes, fails, or is cancelled |
133
138
@@ -347,4 +352,26 @@ List the credentials available from password managers connected to TinyFish, wit
347
352
| ↳ `type`| string | STRING, CONCEALED, or OTP |
348
353
| ↳ `hasTotp`| boolean | Whether the credential carries a TOTP secret |
349
354
355
+
### TinyFish List Browser Profiles
356
+
357
+
List the Browser Context Profiles saved on the TinyFish account, with the ids an agent run can start from to reuse a logged-in session
358
+
359
+
#### Input
360
+
361
+
| Parameter | Type | Required | Description |
362
+
| --------- | ---- | -------- | ----------- |
363
+
|`apiKey`| string | Yes | TinyFish API key |
364
+
365
+
#### Output
366
+
367
+
| Parameter | Type | Description |
368
+
| --------- | ---- | ----------- |
369
+
|`profiles`| array | Browser Context Profiles an agent run can start from |
370
+
| ↳ `profileId`| string | Profile identifier, used as the Browser Profile ID on a run |
371
+
| ↳ `name`| string | Profile name, such as "Salesforce Production" |
372
+
| ↳ `proxyCountryCode`| string | Country the profile proxies through, null when it has no proxy |
373
+
| ↳ `fingerprintSeed`| string | Seed for the browser fingerprint the profile replays, null when the API omits it |
374
+
| ↳ `createdAt`| string | ISO 8601 timestamp when the profile was created, null when the API omits it |
375
+
| ↳ `isDefault`| boolean | Whether runs with no Browser Profile ID use this one, null when the API does not report it |
status: {type: 'string',description: 'Run status filter'},
@@ -566,6 +596,11 @@ Return ONLY the comma-separated URL list - no explanations, no extra text.`,
566
596
description:
567
597
'Vault credentials available to a run [{itemId, connectionId, label, vaultName, domains, fieldMetadata, hasTotp}]',
568
598
},
599
+
profiles: {
600
+
type: 'json',
601
+
description:
602
+
'Browser Context Profiles a run can start from [{profileId, name, proxyCountryCode, fingerprintSeed, createdAt, isDefault}]. Every field but profileId and name can be null when the API omits it',
'Drive a TinyFish web agent to navigate a site and return data matching a JSON schema. Use to pull records — prices, listings, table rows — from pages that have no API.',
657
692
content:
658
-
'# Extract Structured Data From Site\n\nUse the TinyFish Run Agent operation to read a website and return structured data.\n\n## Steps\n1. Set Website URL to the page the agent should start on. Starting closer to the data costs fewer steps.\n2. Write a Goal that names exactly what to collect and where, e.g. "open the pricing page and collect every plan name and monthly price".\n3. Provide an Output Schema (JSON Schema draft-07) describing the fields you want back. TinyFish re-prompts the agent when the result does not match and reports the mismatches in `schemaValidation`.\n4. Raise Max Steps for deeper flows; switch Browser Profile to Stealth when the site blocks automation.\n\n## Output\nReturn the extracted `result` object. Check `schemaValidation.valid` before trusting it, and report any field the agent could not find rather than filling it in.',
693
+
'# Extract Structured Data From Site\n\nUse the TinyFish Run Agent operation to read a website and return structured data.\n\n## Steps\n1. Set Website URL to the page the agent should start on. Starting closer to the data costs fewer steps.\n2. Write a Goal that names exactly what to collect and where, e.g. "open the pricing page and collect every plan name and monthly price".\n3. Provide an Output Schema (JSON Schema draft-07) describing the fields you want back. TinyFish re-prompts the agent when the result does not match and reports the mismatches in `schemaValidation`.\n4. Raise Max Steps for deeper flows; switch Browser Engine to Stealth when the site blocks automation.\n\n## Output\nReturn the extracted `result` object. Check `schemaValidation.valid` before trusting it, and report any field the agent could not find rather than filling it in.',
659
694
},
660
695
{
661
696
name: 'automate-web-task',
662
697
description:
663
698
'Have a TinyFish agent complete a multi-step task on a website — logging in, navigating, filling and submitting forms. Use when a site has no API and a person would normally do the clicks.',
664
699
content:
665
-
'# Automate Web Task\n\nUse the TinyFish Run Agent operation to complete a goal-oriented task on the web.\n\n## Steps\n1. Set Website URL to the entry point and write a Goal that states the steps and the success condition, e.g. "log in, open Billing, download the latest invoice".\n2. Turn on Use Vault Credentials when the task needs a login, and scope it with Vault Credential URIs so only the intended credential is available.\n3. Use Agent Mode "strict" when the run is a test that should fail fast instead of improvising.\n4. Enable Use Proxy and pick a Proxy Country when the site is geo-restricted.\n\n## Output\nReport whether the run completed, what the agent extracted, and the step count. On failure, quote the `error` message and category — AGENT_FAILURE means the goal needs rewording, SYSTEM_FAILURE is worth retrying.',
700
+
'# Automate Web Task\n\nUse the TinyFish Run Agent operation to complete a goal-oriented task on the web.\n\n## Steps\n1. Set Website URL to the entry point and write a Goal that states the steps and the success condition, e.g. "log in, open Billing, download the latest invoice".\n2. Turn on Use Browser Profile to start from a session that is already logged in, and give a Browser Profile ID to pick one. Turn on Use Vault Credentials when the task needs to log in itself, and scope it with Vault Credential URIs so only the intended credential is available. Pairing both lets TinyFish repair a profile whose session has expired.\n3. Use Agent Mode "strict" when the run is a test that should fail fast instead of improvising.\n4. Enable Use Proxy and pick a Proxy Country when the site is geo-restricted.\n\n## Output\nReport whether the run completed, what the agent extracted, and the step count. On failure, quote the `error` message and category — AGENT_FAILURE means the goal needs rewording, SYSTEM_FAILURE is worth retrying.',
0 commit comments