A restricted TinyFish MCP gateway for free search and fetch capabilities.
Four tools with complete input schemas and descriptions. All tools are read-only with clear risk classification. Naming follows verb_noun pattern (search, fetch_content, get_*, list_*). Descriptions are concise (50-150 chars) and explain purpose well. Parameters have types, descriptions, and constraints (enums, min/max). However, output schemas are not documented in the source code, only inferred from API behavior. Error handling is present but generic. No tool annotations (readOnlyHint, etc.) visible in schema definitions.
Fetch and extract clean content through the free TinyFish Fetch API. Each URL is processed independently; per-URL failures appear in errors. This tool does not create browser sessions or run web automation.
List Search API usage records for audit and troubleshooting.
List Fetch API usage records for audit and troubleshooting.
Search the web through the free TinyFish Search API. Returns ranked titles, snippets, URLs, and optional thumbnail URLs. This tool does not start Agent, Browser, batch, or run lifecycle APIs.
Output schemas not documented. Tool descriptions do not specify what fields are returned or their types. LLMs cannot plan downstream tool calls or extract required data without knowing response structure.
Tool annotations missing. Input schemas lack readOnlyHint, destructiveHint, or idempotentHint markers. Clients cannot determine tool safety classification from schema alone.
Error handling is generic. safe_call_error() returns error codes (AUTHENTICATION_REQUIRED, INVALID_INPUT, INTERNAL_ERROR) but does not provide recovery guidance. LLMs cannot determine whether to retry, ask user, or abort.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Parameter descriptions lack format/constraint details. 'query' accepts up to 2000 chars but description does not explain what happens if exceeded. 'location' and 'language' are nullable but no guidance on fallback behavior.
Pagination parameters present but no total count or next_cursor documented. LLMs cannot determine if more results exist or how to fetch them efficiently.