Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/tinyfish-io/tinyfish-cookbook/agentnpx skills add tinyfish-io/tinyfish-cookbook --skill agentgit clone --depth 1 https://github.com/tinyfish-io/tinyfish-cookbookWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00170 | $0.01024 |
| Opus 5 | $0.00085 | $0.00512 |
| Sonnet 5 | $0.00034 | $0.00205 |
| Haiku 4.5 | $0.00017 | $0.00102 |
Grade A, and why
agent scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 72 lines — stays where its author put it; the contents beside it link to each section on GitHub.
TinyFish Agent
Browser automation via the bundled TinyFish MCP server. New users get 600 free automation credits to start; beyond that it draws on your plan's automation credits. Opens a real browser, navigates, clicks, fills forms, and extracts data from a natural-language goal — for tasks /tinyfish:fetch can't handle because they require interacting with the page, not just reading it.
run_web_automation
url(required) — target sitegoal(required) — natural language task; always specify the exact JSON structure you want in the goalsession_id(required) — a fresh random UUID v4 for every call, never reuseduse_profile/profile_id— reuse a saved logged-in Browser Context Profileuse_vault/credential_item_ids— inject vault credentials for login flowsoutput_schema— structured-output schema for the resultbrowser_profile—"lite"(default) or"stealth"for anti-detection on bot-protected sitesagent_config—max_duration_seconds,mode: "strict"for fail-fast test automation, andmax_steps(beta-gated: only include it if the account has beta access enabled — a non-beta account gets403 FORBIDDENif it's included. Omit it to use the default of 150.)
run_web_automation(
url="https://example.com/search",
goal="Search for 'wireless headphones', filter under $50, extract top 5 as JSON: [{name, price, rating}]",
session_id="<new random UUID v4>"
)
May take several minutes and can time out client-side while still running server-side — if it errors or times out, do NOT retry blindly; use get_run or list_runs to check status instead.
Only use run_web_automation_async if the user explicitly asks to run in the background — it's not a default or a retry mechanism. Poll with get_run every 30-60s.
Multiple independent sites — use batch_create, not repeated calls.
batch_create / batch_status / batch_cancel
For the same task across 2+ URLs:
batch_create(runs=[
{url: "https://pizzahut.com", goal: "Extract pizza prices as JSON: [{name, price}]"},
{url: "https://dominos.com", goal: "Extract pizza prices as JSON: [{name, price}]"}
])
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 72 lines · 170 tokens per session scan A 912363f3cef1
agent is a skill published in the GitHub repository tinyfish-io/tinyfish-cookbook (2,135 stars, last pushed 5d ago), licensed MIT. It adds 170 tokens to every session and 1,024 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
canvas
Display, present, and render HTML content on connected Otto nodes (Mac app, iOS, Android). Show on device, preview on mobile, push to screen, or navigate to a URL on any connected node. Use for games, visualizations, dashboards, interactive demos, and live-reloading development previews. Supports presenting, hiding…
browser
Browser automation via the agent-browser CLI. Use when the user needs to drive websites or Electron desktop apps — navigating, filling forms, clicking, screenshots, extracting data, testing web apps, visual UI checks, the Pi Dashboard's Electron shell, or the user's own logged-in browser (SSO/2FA sites). Triggers…
canvas-webapp
Render a React/Vite (or any bundled) web app on the pi-dashboard canvas, which loads loopback URLs in a sandboxed opaque-origin iframe. Use when a canvas(target:{kind:"url"|"server"}) target shows up blank white, an empty surface, or a /live/ 500 ECONNREFUSED. Covers why Vite dev servers and non-CORS static servers…
browser-qa
Validate web applications through the embedded browser with responsive, interaction, console, and screenshot checks.
pretext
Use when building creative browser demos with @chenglou/pretext — DOM-free text layout for ASCII art, typographic flow around obstacles, text-as-geometry games, kinetic typography, and text-powered generative art. Produces single-file HTML demos by default.
p5js
Use when users request: p5.js sketches, creative coding, generative art, interactive visualizations, canvas animations, browser-based visual art, data viz, shader effects, or any p5.js project.