Skip to main content
Glama
haolamnm
by haolamnm

TinyRoe

TinyFish's two free tools, and nothing else.

The official TinyFish MCP server ships 19 tools plus a long instructions block, and six of them spend money. TinyRoe exposes only search and fetch_content, which TinyFish made free for every agent at any wallet balance, including $0.

It skips the OAuth too — these two are served over a REST API behind an X-API-Key header, so nothing expires and there is no authenticate stub to swap out. The same two tools are advertised always.

The project is TinyRoe; the package and the tool prefix are lowercase tinyroe.

tool

does

limit

search

web, news, or academic search

30 requests/min

fetch_content

read up to 10 URLs, returns clean markdown

150 URLs/min

Install

Needs uv. No clone, no Node. Get a key at agent.tinyfish.ai/api-keys — it is shown once.

mkdir -p ~/.config/tinyroe
echo 'TINYFISH_API_KEY=your_key' > ~/.config/tinyroe/.env

Then add the server:

claude mcp add tinyroe -s user -- uvx tinyroe   # Claude Code, all projects
codex mcp add tinyroe -- uvx tinyroe            # Codex

OpenCode uses its own schema, in opencode.json or ~/.config/opencode/opencode.json:

{ "mcp": { "tinyroe": { "type": "local", "command": ["uvx", "tinyroe"], "enabled": true } } }

Any other client takes the same two fields:

{ "mcpServers": { "tinyroe": { "command": "uvx", "args": ["tinyroe"] } } }

Restart the client. You should see two tools and no authentication step.

Related MCP server: open-search-mcp

The key

TINYFISH_API_KEY in the environment wins, then ~/.config/tinyroe/.env, then a .env in the working directory. Prefer the config file: a client launched from a desktop app never sources your shell profile, so an export in .zshrc reaches terminal-launched clients only.

It is read lazily on the first call, so a missing key is a readable error rather than a server that will not start.

Development

uv sync
uv run ruff format . && uv run ruff check . && uv run basedpyright
uv run tinyroe

Licence

MIT. Not affiliated with TinyFish; bring your own key.

Available Tools

2 tools
fetch_contentA

Read one or more URLs and return clean markdown. Free. Renders in a real browser, so JavaScript-heavy pages work. Up to 10 URLs, fetched in parallel. Prefer this over curl or raw HTTP for page content.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoCache tolerance in seconds. 0 forces a live fetch.
urlsYes1-10 http(s) URLs.
linksNoAlso return outbound URLs.
formatNoDefaults to markdown.
purposeNoWhy you are fetching; tailors extraction.
exclude_selectorsNoCSS selectors to strip, e.g. [".comments"].
include_selectorsNoCSS selectors to scope extraction to, e.g. ["main"].

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden and does well: it mentions free usage, real browser rendering, JavaScript support, parallel fetching, and the 10-URL limit. It does not discuss failure behavior, caching semantics, or potential side effects, but for a read-oriented fetch tool the key behavioral traits are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core action comes first, followed by only high-value differentiators. Every sentence earns its place, and no unnecessary detail is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with seven parameters and no output schema, the description provides enough orientation to invoke it correctly in most cases. The schema covers parameter details, and the description covers real-world behavior like browser rendering and parallel fetching. Minor missing context includes default caching and output format behavior, but these are partially covered by schema defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds a couple of useful constraints like 'Up to 10 URLs' and parallel fetching, but it does not need to explain each parameter because the schema already provides complete descriptions for all seven parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific action and resource: 'Read one or more URLs and return clean markdown.' It clearly differentiates this from browsing or searching by emphasizing URL-based fetching and positioning it as preferable to curl/raw HTTP for page content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete usage guidance: 'Prefer this over curl or raw HTTP for page content' and notes that it handles JavaScript-heavy pages. It does not explicitly contrast it with the sibling 'search' tool, but the intent is reasonably clear for an agent deciding between fetching and searching.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • First observedfetch_content
    • First observedsearch

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

Search discovers relevant URLs while fetch_content retrieves page content, making their roles complementary rather than overlapping. The description explicitly advises using search before fetch_content when the target page is unknown, further reducing ambiguity.

Naming Consistency4/5

Both tool names are clear action-oriented verbs, though one is a bare verb (search) and the other follows a verb_noun pattern (fetch_content). This is a minor stylistic inconsistency rather than a functional or comprehension problem.

Tool Count3/5

Two tools is borderline for a web research server, but the pair covers the essential search-then-fetch workflow compactly. The limited surface feels thin rather than bloated, and each tool earns its place.

Completeness4/5

The two tools form a complete core workflow: discover URLs via search and retrieve full content via fetch_content. Minor gaps exist, such as lacking search filters or page-level extraction options, but agents can accomplish the main research task without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A lightweight MCP server enabling web search and content fetching via TinyFish Free Access API with support for single and burst URL fetch.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Web search, page fetching, and research from the terminal or any MCP client — no API key required.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides web search scraping from DuckDuckGo (with Mojeek fallback) and URL content fetching as markdown/text or raw HTML.
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides Google search, URL extraction, and academic paper inline extraction without API keys, enabling search and content retrieval from a single MCP server.
    5
    296 npm
    MIT