Metadata-Version: 2.5
Name: tinyroe
Version: 1.0.0
Summary: An MCP server exposing only TinyFish's two free tools: search and fetch_content.
Project-URL: Homepage, https://github.com/haolamnm/tinyroe
Project-URL: Issues, https://github.com/haolamnm/tinyroe/issues
Author: Hao Lam
License-Expression: MIT
License-File: LICENSE
Keywords: fetch,mcp,model-context-protocol,search,tinyfish
Requires-Python: >=3.13
Description-Content-Type: text/markdown

# 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](https://www.tinyfish.ai/blog/search-and-fetch-are-now-free-for-every-agent-everywhere) 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](https://docs.astral.sh/uv/). No clone, no Node. Get a key at [agent.tinyfish.ai/api-keys](https://agent.tinyfish.ai/api-keys) — it is shown once.

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

Then add the server:

```sh
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`:

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

Any other client takes the same two fields:

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

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

## 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

```sh
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.
