diff --git a/.github/AGENTS.md b/.github/AGENTS.md index 3cffd5c..5de52e6 100644 --- a/.github/AGENTS.md +++ b/.github/AGENTS.md @@ -2,7 +2,7 @@ This directory contains maintainer-facing repository automation and notes. -- Keep release-process documentation in `.github/README.md` or another maintainer-only repo doc, not in package `README.md` files that become PyPI project descriptions. +- Keep release-process documentation in `.github/MAINTAINERS.md` or another maintainer-only repo doc, not in package `README.md` files that become PyPI project descriptions. - Python package publish workflows should read package name/version from the package `pyproject.toml`, check PyPI for that exact version, and skip publishing if it already exists. - Do not add automatic version bumping to publish workflows unless the release process is explicitly redesigned; package version bumps should be reviewed in PRs. - Use the repository `PYPI_API_TOKEN` Actions secret for token-based PyPI publishing. Never commit token values or package credentials. diff --git a/.github/README.md b/.github/MAINTAINERS.md similarity index 95% rename from .github/README.md rename to .github/MAINTAINERS.md index 419e0aa..420142a 100644 --- a/.github/README.md +++ b/.github/MAINTAINERS.md @@ -18,7 +18,6 @@ Current Python package version files: | Integration | Package | Version file | | --- | --- | --- | | Google ADK | `tinyfish-adk` | `google-adk/pyproject.toml` | -| CrewAI | `tinyfish-web-agent` | `crew-ai/pyproject.toml` | | LangChain | `langchain-tinyfish` | `langchain/pyproject.toml` | PyPI versions are immutable. If a version has already been published, bump to a new version such as a patch release before merging. diff --git a/README.md b/README.md index f15e561..81dc8be 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,104 @@ # TinyFish Web Agent Integrations -TinyFish Web Agent provides AI-powered web automation using natural language instructions and can interact with any website including bot-protected pages. TinyFish Web Agent works across multiple sites and adapts to page changes without breaking, making it the perfect tool for automations and AI agents. Check out all our integrations or get started with our [API](https://docs.tinyfish.ai). +Bring TinyFish's web tools into your AI agents and automated workflows. -## What is TinyFish Web Agent useful for? +These integrations let your agents search the web, read pages, and complete tasks in a real browser. TinyFish handles the web work and returns results to your agent or workflow, where you can use them to answer questions, update records, or trigger the next step. -- Navigating websites and completing workflows using plain English -- Scraping data from bot-protected or dynamic pages -- Automating form submissions and multi-step browser tasks -- Extracting structured data from any web page at scale -- Running browser automations across authenticated systems -- Opening hundreds of URLs and collecting results from every page +Choose your platform below, or follow the [API quick start](https://docs.tinyfish.ai/quick-start) to build your own connection. -## Integrations +![High-level diagram: agents and workflows call the integrations in this repository, which connect to TinyFish's hosted web tools. Results return to the calling agent or workflow.](./docs/assets/tinyfish-integrations.svg) -| Integration | Description | -| ------------------ | ---------------------------------------------------------------- | -| [Claude](./claude) | Plugin for [Claude Code](https://code.claude.com), Claude.ai, Claude Desktop, and Claude Cowork | -| [Grok](./grok) | Plugin for [Grok Build](https://x.ai) — search, fetch, and goal-driven web automation via TinyFish's hosted MCP server | -| [Dify](./dify) | Plugin for the [Dify](https://dify.ai) AI application platform | -| [LangChain](./langchain) | `langchain-tinyfish` — TinyFish Search, Fetch, Web Agent, and Browser as LangChain tools | -| [Google ADK](./google-adk) | `tinyfish-adk` — TinyFish tools for the Google Agent Development Kit | -| [Hermes](./hermes) | `tinyfish-hermes` — TinyFish Search and Fetch as a [Hermes Agent](https://github.com/NousResearch/Hermes-Agent) web provider plugin | -| [Pi](./pi) | `@tiny-fish/pi` — TinyFish skills and MCP server for the [Pi coding agent](https://pi.dev) | -| [n8n](./n8n) | Community node for the [n8n](https://n8n.io) workflow automation platform | +[Editable Excalidraw source](./docs/assets/tinyfish-integrations.excalidraw). Open this file in [Excalidraw](https://excalidraw.com/) to edit the diagram. -## Contribution guidelines +## Choose an integration -Want to contribute to these integrations? We love adding TinyFish Web Agent to new ecosystems! Check out individual integration directories for setup and development instructions. +### AI assistants and coding agents -## Identifying your integration to TinyFish +| Integration | What it adds | +|---|---| +| [Claude](./claude) | Hosted MCP tools and skills for Claude Code, Claude.ai, Claude Desktop, and Cowork. Covers search, page extraction, automation, browser control, and monitoring. | +| [Grok](./grok) | Grok Build plugin with hosted MCP tools and skills for web research, automation, authenticated sites, browser control, and monitoring. | +| [Hermes](./hermes) | Search and Fetch providers, a cloud browser provider, and the `tinyfish_agent` tool for goal-based web automation. | +| [Pi](./pi) | `@tiny-fish/pi`: six skills that use TinyFish through an MCP adapter or the TinyFish CLI. | + +### Agent frameworks + +| Integration | What it adds | +|---|---| +| [LangChain](./langchain) | `langchain-tinyfish`: Search, Fetch, Web Agent, and Browser tools, with async support and progress streaming inside LangGraph. | +| [Google ADK](./google-adk) | `tinyfish-adk`: seven function tools for search, extraction, browser sessions, automation, and run management. | -Every integration that calls the REST API directly must send two headers on every request. +### Workflow platforms -| header | value | +| Integration | What it adds | |---|---| -| `X-TF-Client-Name` | the bare integration token — the same value used for `api_integration` where one exists: `dify`, `hermes`, `n8n` | -| `X-TF-Client-Version` | the integration's own published version | +| [Dify](./dify) | Plugin for Dify workflows and agents. Start synchronous, asynchronous, or streamed automations, then check or list runs. | +| [n8n](./n8n) | `n8n-nodes-tinyfish`: community node for browser automation and run management. Works in workflows and as an n8n AI Agent tool. | + +## What you can do + +Available tools vary by integration: + +- **Search:** Find live web results with titles, snippets, and source URLs. +- **Fetch:** Read page content as Markdown, HTML, or JSON, including pages rendered with JavaScript. +- **Web Agent:** Give TinyFish a URL and a goal. It navigates pages, clicks buttons, fills forms, and returns results. +- **Browser:** Create a remote browser session for direct control through Playwright, Puppeteer, or another CDP client. +- **Monitoring:** Check a page or search topic on a schedule and send results to a webhook through supported MCP integrations. + +The MCP tools also support saved browser profiles for tasks on sites you have signed into. + +Search and Fetch are free within daily allowances. Automation, browser sessions, and monitor checks draw from your TinyFish wallet. See the [documentation](https://docs.tinyfish.ai/) for current usage details. + +## Get started + +1. Open the guide for your integration above. +2. Install the package, plugin, or workflow node. +3. Connect your TinyFish account using the guide's authentication steps. Some integrations use browser sign-in; others require an [API key](https://agent.tinyfish.ai/api-keys). +4. Run an example from the integration guide. + +For another MCP-compatible client, follow the [MCP setup guide](https://docs.tinyfish.ai/mcp-integration). + +## Example: collect product prices in n8n + +Add a TinyFish Web Agent node to your workflow and provide a starting URL and a goal: + +```text +URL: https://scrapeme.live/shop + +Goal: Extract the first 2 product names and prices. +Return JSON with a products array containing name and price. +``` + +TinyFish runs the browser task and returns the result to n8n. Use downstream nodes to save the products to Google Sheets or send an update to Slack. + +Follow the [n8n tutorial](https://docs.tinyfish.ai/integrations/n8n) for setup and a complete workflow. + +## Documentation and examples + +- [Developer documentation](https://docs.tinyfish.ai/) +- [API quick start](https://docs.tinyfish.ai/quick-start) +- [Agent API reference](https://docs.tinyfish.ai/agent-api/reference) +- [MCP setup](https://docs.tinyfish.ai/mcp-integration) +- [Dify guide](https://docs.tinyfish.ai/integrations/dify) +- [TinyFish Cookbook](https://github.com/tinyfish-io/tinyfish-cookbook) + +## Contributing + +To improve an integration or add support for another platform, follow the development instructions in the relevant integration directory and open a pull request. Repository maintainers can find release instructions in [Maintainer notes](./.github/MAINTAINERS.md). + +Integrations that call the REST API directly must send these headers on every request: + +| Header | Value | +|---|---| +| `X-TF-Client-Name` | The bare integration token, matching `api_integration` where one exists, such as `dify`, `hermes`, or `n8n`. | +| `X-TF-Client-Version` | The integration's published version. | + +Python SDK integrations use `TF_API_INTEGRATION` for attribution. With `tinyfish>=0.5.0`, `TF_CLIENT_NAME` and `TF_CLIENT_VERSION` set the corresponding headers; older SDK versions ignore these two variables. LangChain and Google ADK currently set only `TF_API_INTEGRATION`. + +Do not set `X-TF-Request-Origin` manually; TinyFish derives the REST transport origin, and the SDK sets its own value. -Do not send `X-TF-Request-Origin` yourself; `api` is the transport and the server derives it, and the `tinyfish` SDK already sets its own value. Integrations that wrap the SDK set `TF_CLIENT_NAME` / `TF_CLIENT_VERSION` alongside `TF_API_INTEGRATION` instead — the SDK turns those two into the headers above from `tinyfish>=0.5.0`, and ignores them before that. `langchain` and `google-adk` set only `TF_API_INTEGRATION` today. Without any of this, telemetry cannot tell the integration from a hand-written curl. +For questions or bugs, [open an issue](https://github.com/tinyfish-io/tinyfish-web-agent-integrations/issues). ## License -These integrations are licensed under the MIT License. +[MIT](./LICENSE). diff --git a/docs/assets/tinyfish-integrations.excalidraw b/docs/assets/tinyfish-integrations.excalidraw new file mode 100644 index 0000000..5fa1648 --- /dev/null +++ b/docs/assets/tinyfish-integrations.excalidraw @@ -0,0 +1,2209 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "tinyfish-001", + "type": "text", + "x": 50, + "y": 42, + "width": 335.984375, + "height": 46.800000000000004, + "angle": 0, + "strokeColor": "#172554", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183201, + "version": 1, + "versionNonce": 394001, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 2, + "text": "TinyFish integrations", + "originalText": "TinyFish integrations", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-002", + "type": "text", + "x": 50, + "y": 96, + "width": 649.984375, + "height": 28.6, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183202, + "version": 1, + "versionNonce": 394002, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 22, + "fontFamily": 2, + "text": "Connect your agents and workflows to TinyFish's hosted web tools.", + "originalText": "Connect your agents and workflows to TinyFish's hosted web tools.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-003", + "type": "text", + "x": 50, + "y": 172, + "width": 206.0, + "height": 19.5, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183203, + "version": 1, + "versionNonce": 394003, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 15, + "fontFamily": 2, + "text": "YOUR AGENT / WORKFLOW", + "originalText": "YOUR AGENT / WORKFLOW", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-004", + "type": "text", + "x": 395, + "y": 172, + "width": 220.984375, + "height": 19.5, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183204, + "version": 1, + "versionNonce": 394004, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 15, + "fontFamily": 2, + "text": "INTEGRATIONS IN THIS REPO", + "originalText": "INTEGRATIONS IN THIS REPO", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-005", + "type": "text", + "x": 815, + "y": 172, + "width": 129.0, + "height": 19.5, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183205, + "version": 1, + "versionNonce": 394005, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 15, + "fontFamily": 2, + "text": "TINYFISH CLOUD", + "originalText": "TINYFISH CLOUD", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-006", + "type": "text", + "x": 1205, + "y": 172, + "width": 74.0, + "height": 19.5, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183206, + "version": 1, + "versionNonce": 394006, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 15, + "fontFamily": 2, + "text": "LIVE WEB", + "originalText": "LIVE WEB", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-007", + "type": "rectangle", + "x": 50, + "y": 218, + "width": 285, + "height": 112, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-0" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183207, + "version": 1, + "versionNonce": 394007, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-008", + "type": "text", + "x": 68, + "y": 238, + "width": 240.0, + "height": 23.400000000000002, + "angle": 0, + "strokeColor": "#172554", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-0" + ], + "frameId": null, + "roundness": null, + "seed": 183208, + "version": 1, + "versionNonce": 394008, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 18, + "fontFamily": 2, + "text": "AI assistants & coding agents", + "originalText": "AI assistants & coding agents", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-009", + "type": "text", + "x": 68, + "y": 272, + "width": 165.0, + "height": 26.0, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-0" + ], + "frameId": null, + "roundness": null, + "seed": 183209, + "version": 1, + "versionNonce": 394009, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Claude \u00b7 Grok \u00b7 Pi", + "originalText": "Claude \u00b7 Grok \u00b7 Pi", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-010", + "type": "rectangle", + "x": 395, + "y": 218, + "width": 340, + "height": 112, + "angle": 0, + "strokeColor": "#c4b5fd", + "backgroundColor": "#f5f3ff", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-0" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183210, + "version": 1, + "versionNonce": 394010, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-011", + "type": "text", + "x": 415, + "y": 238, + "width": 123.0, + "height": 27.3, + "angle": 0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-0" + ], + "frameId": null, + "roundness": null, + "seed": 183211, + "version": 1, + "versionNonce": 394011, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 21, + "fontFamily": 2, + "text": "MCP + skills", + "originalText": "MCP + skills", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-012", + "type": "text", + "x": 415, + "y": 274, + "width": 178.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-0" + ], + "frameId": null, + "roundness": null, + "seed": 183212, + "version": 1, + "versionNonce": 394012, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Pi can also use the CLI", + "originalText": "Pi can also use the CLI", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-013", + "type": "arrow", + "x": 343, + "y": 274.0, + "width": 42, + "height": 0.0, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183213, + "version": 1, + "versionNonce": 394013, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 42, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-014", + "type": "arrow", + "x": 745, + "y": 274.0, + "width": 60, + "height": 0.0, + "angle": 0, + "strokeColor": "#a78bfa", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183214, + "version": 1, + "versionNonce": 394014, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 60, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-015", + "type": "rectangle", + "x": 50, + "y": 354, + "width": 285, + "height": 100, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183215, + "version": 1, + "versionNonce": 394015, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-016", + "type": "text", + "x": 68, + "y": 374, + "width": 118.984375, + "height": 23.400000000000002, + "angle": 0, + "strokeColor": "#172554", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-1" + ], + "frameId": null, + "roundness": null, + "seed": 183216, + "version": 1, + "versionNonce": 394016, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 18, + "fontFamily": 2, + "text": "Hermes Agent", + "originalText": "Hermes Agent", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-017", + "type": "text", + "x": 68, + "y": 408, + "width": 209.0, + "height": 26.0, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-1" + ], + "frameId": null, + "roundness": null, + "seed": 183217, + "version": 1, + "versionNonce": 394017, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Web and browser tools", + "originalText": "Web and browser tools", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-018", + "type": "rectangle", + "x": 395, + "y": 354, + "width": 340, + "height": 100, + "angle": 0, + "strokeColor": "#c4b5fd", + "backgroundColor": "#f5f3ff", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183218, + "version": 1, + "versionNonce": 394018, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-019", + "type": "text", + "x": 415, + "y": 374, + "width": 279.0, + "height": 27.3, + "angle": 0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-1" + ], + "frameId": null, + "roundness": null, + "seed": 183219, + "version": 1, + "versionNonce": 394019, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 21, + "fontFamily": 2, + "text": "Native providers + agent tool", + "originalText": "Native providers + agent tool", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-020", + "type": "text", + "x": 415, + "y": 410, + "width": 233.96875, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-1" + ], + "frameId": null, + "roundness": null, + "seed": 183220, + "version": 1, + "versionNonce": 394020, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Search, Fetch, Browser, Agent", + "originalText": "Search, Fetch, Browser, Agent", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-021", + "type": "arrow", + "x": 343, + "y": 404.0, + "width": 42, + "height": 0.0, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183221, + "version": 1, + "versionNonce": 394021, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 42, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-022", + "type": "arrow", + "x": 745, + "y": 404.0, + "width": 60, + "height": 0.0, + "angle": 0, + "strokeColor": "#a78bfa", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183222, + "version": 1, + "versionNonce": 394022, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 60, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-023", + "type": "rectangle", + "x": 50, + "y": 478, + "width": 285, + "height": 100, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183223, + "version": 1, + "versionNonce": 394023, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-024", + "type": "text", + "x": 68, + "y": 498, + "width": 149.0, + "height": 23.400000000000002, + "angle": 0, + "strokeColor": "#172554", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-2" + ], + "frameId": null, + "roundness": null, + "seed": 183224, + "version": 1, + "versionNonce": 394024, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 18, + "fontFamily": 2, + "text": "Agent frameworks", + "originalText": "Agent frameworks", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-025", + "type": "text", + "x": 68, + "y": 532, + "width": 227.984375, + "height": 26.0, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-2" + ], + "frameId": null, + "roundness": null, + "seed": 183225, + "version": 1, + "versionNonce": 394025, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "LangChain \u00b7 Google ADK", + "originalText": "LangChain \u00b7 Google ADK", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-026", + "type": "rectangle", + "x": 395, + "y": 478, + "width": 340, + "height": 100, + "angle": 0, + "strokeColor": "#c4b5fd", + "backgroundColor": "#f5f3ff", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183226, + "version": 1, + "versionNonce": 394026, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-027", + "type": "text", + "x": 415, + "y": 498, + "width": 172.0, + "height": 27.3, + "angle": 0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-2" + ], + "frameId": null, + "roundness": null, + "seed": 183227, + "version": 1, + "versionNonce": 394027, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 21, + "fontFamily": 2, + "text": "Python SDK tools", + "originalText": "Python SDK tools", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-028", + "type": "text", + "x": 415, + "y": 534, + "width": 180.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-2" + ], + "frameId": null, + "roundness": null, + "seed": 183228, + "version": 1, + "versionNonce": 394028, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Framework-native tools", + "originalText": "Framework-native tools", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-029", + "type": "arrow", + "x": 343, + "y": 528.0, + "width": 42, + "height": 0.0, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183229, + "version": 1, + "versionNonce": 394029, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 42, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-030", + "type": "arrow", + "x": 745, + "y": 528.0, + "width": 60, + "height": 0.0, + "angle": 0, + "strokeColor": "#a78bfa", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183230, + "version": 1, + "versionNonce": 394030, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 60, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-031", + "type": "rectangle", + "x": 50, + "y": 602, + "width": 285, + "height": 100, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#f8fafc", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-3" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183231, + "version": 1, + "versionNonce": 394031, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-032", + "type": "text", + "x": 68, + "y": 622, + "width": 157.0, + "height": 23.400000000000002, + "angle": 0, + "strokeColor": "#172554", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-3" + ], + "frameId": null, + "roundness": null, + "seed": 183232, + "version": 1, + "versionNonce": 394032, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 18, + "fontFamily": 2, + "text": "Workflow platforms", + "originalText": "Workflow platforms", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-033", + "type": "text", + "x": 68, + "y": 656, + "width": 90.0, + "height": 26.0, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "host-3" + ], + "frameId": null, + "roundness": null, + "seed": 183233, + "version": 1, + "versionNonce": 394033, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Dify \u00b7 n8n", + "originalText": "Dify \u00b7 n8n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-034", + "type": "rectangle", + "x": 395, + "y": 602, + "width": 340, + "height": 100, + "angle": 0, + "strokeColor": "#c4b5fd", + "backgroundColor": "#f5f3ff", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-3" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183234, + "version": 1, + "versionNonce": 394034, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-035", + "type": "text", + "x": 415, + "y": 622, + "width": 218.0, + "height": 27.3, + "angle": 0, + "strokeColor": "#6d28d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-3" + ], + "frameId": null, + "roundness": null, + "seed": 183235, + "version": 1, + "versionNonce": 394035, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 21, + "fontFamily": 2, + "text": "REST plugins + nodes", + "originalText": "REST plugins + nodes", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-036", + "type": "text", + "x": 415, + "y": 658, + "width": 250.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "integration-3" + ], + "frameId": null, + "roundness": null, + "seed": 183236, + "version": 1, + "versionNonce": 394036, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Automation and run management", + "originalText": "Automation and run management", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-037", + "type": "arrow", + "x": 343, + "y": 652.0, + "width": 42, + "height": 0.0, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183237, + "version": 1, + "versionNonce": 394037, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 42, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-038", + "type": "arrow", + "x": 745, + "y": 652.0, + "width": 60, + "height": 0.0, + "angle": 0, + "strokeColor": "#a78bfa", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183238, + "version": 1, + "versionNonce": 394038, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.0 + ], + [ + 60, + 0.0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-039", + "type": "rectangle", + "x": 815, + "y": 218, + "width": 310, + "height": 484, + "angle": 0, + "strokeColor": "#93c5fd", + "backgroundColor": "#eff6ff", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183239, + "version": 1, + "versionNonce": 394039, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-040", + "type": "text", + "x": 839, + "y": 242, + "width": 79.0, + "height": 31.200000000000003, + "angle": 0, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183240, + "version": 1, + "versionNonce": 394040, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 24, + "fontFamily": 2, + "text": "Search", + "originalText": "Search", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-041", + "type": "text", + "x": 839, + "y": 276, + "width": 158.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183241, + "version": 1, + "versionNonce": 394041, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Find live web results", + "originalText": "Find live web results", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-042", + "type": "text", + "x": 839, + "y": 326, + "width": 64.0, + "height": 31.200000000000003, + "angle": 0, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183242, + "version": 1, + "versionNonce": 394042, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 24, + "fontFamily": 2, + "text": "Fetch", + "originalText": "Fetch", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-043", + "type": "text", + "x": 839, + "y": 360, + "width": 144.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183243, + "version": 1, + "versionNonce": 394043, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Read page content", + "originalText": "Read page content", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-044", + "type": "text", + "x": 839, + "y": 410, + "width": 121.984375, + "height": 31.200000000000003, + "angle": 0, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183244, + "version": 1, + "versionNonce": 394044, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 24, + "fontFamily": 2, + "text": "Web Agent", + "originalText": "Web Agent", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-045", + "type": "text", + "x": 839, + "y": 444, + "width": 210.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183245, + "version": 1, + "versionNonce": 394045, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Complete tasks from a goal", + "originalText": "Complete tasks from a goal", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-046", + "type": "text", + "x": 839, + "y": 494, + "width": 91.0, + "height": 31.200000000000003, + "angle": 0, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183246, + "version": 1, + "versionNonce": 394046, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 24, + "fontFamily": 2, + "text": "Browser", + "originalText": "Browser", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-047", + "type": "text", + "x": 839, + "y": 528, + "width": 194.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183247, + "version": 1, + "versionNonce": 394047, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Control a remote browser", + "originalText": "Control a remote browser", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-048", + "type": "text", + "x": 839, + "y": 578, + "width": 114.0, + "height": 31.200000000000003, + "angle": 0, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183248, + "version": 1, + "versionNonce": 394048, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 24, + "fontFamily": 2, + "text": "Monitoring", + "originalText": "Monitoring", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-049", + "type": "text", + "x": 839, + "y": 612, + "width": 233.0, + "height": 22.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183249, + "version": 1, + "versionNonce": 394049, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 17, + "fontFamily": 2, + "text": "Scheduled page / topic checks", + "originalText": "Scheduled page / topic checks", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-050", + "type": "text", + "x": 839, + "y": 665, + "width": 231.984375, + "height": 19.5, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "tinyfish-cloud" + ], + "frameId": null, + "roundness": null, + "seed": 183250, + "version": 1, + "versionNonce": 394050, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 15, + "fontFamily": 2, + "text": "Tool coverage varies by integration", + "originalText": "Tool coverage varies by integration", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-051", + "type": "rectangle", + "x": 1205, + "y": 354, + "width": 245, + "height": 224, + "angle": 0, + "strokeColor": "#86efac", + "backgroundColor": "#f0fdf4", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "live-web" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 183251, + "version": 1, + "versionNonce": 394051, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false + }, + { + "id": "tinyfish-052", + "type": "text", + "x": 1227, + "y": 379, + "width": 211.0, + "height": 27.3, + "angle": 0, + "strokeColor": "#166534", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "live-web" + ], + "frameId": null, + "roundness": null, + "seed": 183252, + "version": 1, + "versionNonce": 394052, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 21, + "fontFamily": 2, + "text": "Websites & web apps", + "originalText": "Websites & web apps", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-053", + "type": "text", + "x": 1227, + "y": 430, + "width": 169.0, + "height": 74.1, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "live-web" + ], + "frameId": null, + "roundness": null, + "seed": 183253, + "version": 1, + "versionNonce": 394053, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 19, + "fontFamily": 2, + "text": "Public pages\nDynamic interfaces\nSigned-in systems", + "originalText": "Public pages\nDynamic interfaces\nSigned-in systems", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-054", + "type": "arrow", + "x": 1135, + "y": 466, + "width": 60, + "height": 0, + "angle": 0, + "strokeColor": "#4ade80", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183254, + "version": 1, + "versionNonce": 394054, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 60, + 0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-055", + "type": "arrow", + "x": 970, + "y": 714, + "width": 778, + "height": 61, + "angle": 0, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183255, + "version": 1, + "versionNonce": 394055, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 61 + ], + [ + -778, + 61 + ], + [ + -778, + 0 + ] + ], + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "tinyfish-056", + "type": "text", + "x": 365, + "y": 795, + "width": 360.0, + "height": 26.0, + "angle": 0, + "strokeColor": "#1d4ed8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183256, + "version": 1, + "versionNonce": 394056, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Results return to your agent or workflow", + "originalText": "Results return to your agent or workflow", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + }, + { + "id": "tinyfish-057", + "type": "text", + "x": 50, + "y": 840, + "width": 512.0, + "height": 19.5, + "angle": 0, + "strokeColor": "#475569", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 183257, + "version": 1, + "versionNonce": 394057, + "isDeleted": false, + "boundElements": null, + "created": 1792540800000, + "updated": 1792540800000, + "link": null, + "locked": false, + "fontSize": 15, + "fontFamily": 2, + "text": "High-level view \u00b7 Follow each integration's guide for supported tools and setup.", + "originalText": "High-level view \u00b7 Follow each integration's guide for supported tools and setup.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "autoResize": true, + "lineHeight": 1.3 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff", + "exportBackground": true, + "exportWithDarkMode": false + }, + "files": {} +} diff --git a/docs/assets/tinyfish-integrations.svg b/docs/assets/tinyfish-integrations.svg new file mode 100644 index 0000000..c83869e --- /dev/null +++ b/docs/assets/tinyfish-integrations.svg @@ -0,0 +1,74 @@ + +TinyFish integrations: high-level architecture +Claude, Grok, Pi, Hermes, LangChain, Google ADK, Dify, and n8n use integrations in this repository to call TinyFish hosted web tools. TinyFish accesses websites and web apps, then returns results to the agent or workflow. Available tools vary by integration. + +TinyFish integrations +Connect your agents and workflows to TinyFish's hosted web tools. +YOUR AGENT / WORKFLOW +INTEGRATIONS IN THIS REPO +TINYFISH CLOUD +LIVE WEB + +AI assistants & coding agents +Claude · Grok · Pi + +MCP + skills +Pi can also use the CLI + + + + + +Hermes Agent +Web and browser tools + +Native providers + agent tool +Search, Fetch, Browser, Agent + + + + + +Agent frameworks +LangChain · Google ADK + +Python SDK tools +Framework-native tools + + + + + +Workflow platforms +Dify · n8n + +REST plugins + nodes +Automation and run management + + + + + +Search +Find live web results +Fetch +Read page content +Web Agent +Complete tasks from a goal +Browser +Control a remote browser +Monitoring +Scheduled page / topic checks +Tool coverage varies by integration + +Websites & web apps +Public pages +Dynamic interfaces +Signed-in systems + + + + +Results return to your agent or workflow +High-level view · Follow each integration's guide for supported tools and setup. +