Skip to main content
Glama
engram-ae

noapi-google-search-mcp

by engram-ae

noapi-google-search-mcp

vincentkaufmann@protonmail.com

If you want to support noapi-google-mcp or gpt-oss-20B/120B-Vision and other open source models in the pipeline please add to my GPU compute fund: around $3000 are needed.

If you find this useful, consider supporting continued development and new features.BTC: 16DT4AHemLyn7C6P116YepjY518gu9wUUH ETH: 0x7287D1F9c77832cFF246937af0443622bFdACD04

38 tools. Zero API keys. Give any local LLM real Google search, live feeds, vision, OCR, and full video understanding.

An MCP server that turns your local LLM into a fully connected assistant. Real Google results, live news and social feeds, reverse image search, offline OCR, YouTube transcription and clip extraction — all running locally through headless Chromium and open-source ML models. No API keys, no usage limits, no cloud dependency.

Works with LM Studio, Claude Desktop, OpenClaw, Ollama, and any MCP-compatible client.


What's New in v0.3.1 — Anti-Bot Detection & Neural Net CAPTCHA Solver

Google started catching headless Chromium browsers and serving CAPTCHAs instead of search results (#2). Fixed it properly and then added a neural net CAPTCHA solver just for the hell of it.

Stealth patches:

  • JavaScript injection before every page load patches navigator.webdriver, fake browser plugins, chrome.runtime, and removes Playwright fingerprints

  • Fixed User-Agent mismatch (was aarch64, now matches the actual Chromium binary)

  • Cookie persistence between sessions so Google sees a returning browser, not a fresh bot

  • Human-like random delays between page interactions

  • Clear error messages when rate-limited instead of cryptic timeouts

Neural net CAPTCHA solver (MobileNetV2 + OpenCV):

  • When Google serves a reCAPTCHA image challenge ("Select all images with traffic lights"), the server now attempts to solve it automatically

  • Uses MobileNetV2 (ImageNet classifier, ~13MB ONNX model, auto-downloads on first encounter)

  • OpenCV splits the CAPTCHA grid into cells, each cell is classified by the neural net and matched against the prompt

  • Covers 22 common CAPTCHA categories: traffic lights, buses, bicycles, motorcycles, cars, bridges, boats, trains, trucks, fire hydrants, parking meters, tractors, and more

  • Human-like mouse movement for clicking cells and the verify button

  • Falls back gracefully if the challenge type isn't supported

Will it solve every CAPTCHA? No. But it'll get through some of them, and honestly we mostly built it because we could.


Related MCP server: websearch-mcp

What's New in v0.3.0 — 16 New Tools

YouTube RAG — Subscribe, Transcribe, Search, Clip

A full local retrieval-augmented pipeline for YouTube. Subscribe to any channel, and when you check feeds the server automatically downloads the audio, transcribes it with Whisper, and stores the full transcript in SQLite with FTS5 full-text search. Every word from every video becomes searchable — ask your LLM a question and it pulls the answer from the right video.

Found something interesting? Ask the LLM to extract that segment as a clip. It reads the transcript, finds the exact timestamps, and cuts the video for you. This is the beginning of AI/LLM-powered video editing — your LLM understands the content and cuts clips based on what's being said, not just timestamps.

How it works:

  1. subscribe to a YouTube channel — by handle (@3Blue1Brown), URL, or channel ID

  2. check_feeds — new videos are fetched and auto-transcribed locally with faster-whisper. Transcripts are written into the database for instant search. Up to 5 videos per check, cached so nothing gets re-downloaded.

  3. search_feeds — full-text search across all transcripts. Supports AND, OR, NOT, and quoted phrases. Your LLM finds the exact video and passage that answers your question.

  4. extract_video_clip — tell the LLM what you're interested in and it cuts the clip from the video. The LLM uses the transcript to find the right segment and extracts it automatically.

"Subscribe to @AndrejKarpathy on YouTube"
"Check my feeds"
"Search my feeds for backpropagation explained"
"What did Karpathy say about tokenization?"
"Extract the part where he explains gradient descent"
"Cut a clip of the hardware comparison section"

No embeddings, no vector database, no API — just Whisper + SQLite FTS5 running on your machine.

Roadmap: The clip extraction is the first step toward full AI-driven video editing. Future releases will add music/audio overlay, video remixing, multi-clip compilation, vertical reformat for TikTok/Reels/Shorts, and automated highlight reels — all driven by your LLM understanding the content.


Live Feed Subscriptions

Subscribe to news, Reddit, Hacker News, YouTube channels, Twitter/X profiles, GitHub repos, arXiv papers, and podcasts. Content is fetched, stored locally in SQLite with full-text search, and available to your LLM instantly.

New Tool

What It Does

subscribe

Add any source — news RSS, Reddit, HN, GitHub, arXiv, YouTube, podcasts, Twitter/X

unsubscribe

Remove a subscription and its stored content

list_subscriptions

See all active feeds with item counts

check_feeds

Poll all subscriptions, fetch new content, auto-transcribe YouTube videos

search_feeds

Full-text search across everything your feeds have collected

get_feed_items

Browse recent items, filtered by source or type

Pre-configured news sources — subscribe with one word: bbc, cnn, nyt, guardian, npr, aljazeera, techcrunch, ars, verge, wired, reuters

arXiv shortcutsai, ml, cv, nlp, robotics, crypto, systems, hci

"Subscribe to BBC News, r/LocalLLaMA, and Hacker News"
"Follow @elonmusk on Twitter"
"Subscribe to the YouTube channel @3Blue1Brown"
"Watch anthropics/claude-code on GitHub for new releases"
"Subscribe to the machine learning arXiv category"
"Check my feeds"
"Search my feeds for transformer architecture"
"What's new in my Reddit feeds?"

Local File Processing

Transcribe meetings, convert formats, read documents — all local, no cloud.

New Tool

What It Does

transcribe_local

Transcribe any local audio or video file with Whisper (mp3, wav, mp4, mkv, etc.)

convert_media

FFmpeg format conversion — video to audio, format to format, video to GIF

read_document

Extract text from PDF, DOCX, HTML, CSV, JSON, and 30+ text formats

Email, Web Utilities & Cloud

Pull emails, generate QR codes, shorten URLs, archive pages, look up Wikipedia, upload to S3.

New Tool

What It Does

fetch_emails

Pull emails via IMAP — Gmail, Outlook, Yahoo, any IMAP server

paste_text

Post text to a pastebin and get a shareable link

shorten_url

Shorten any URL via TinyURL

generate_qr

Generate QR code images for URLs, Wi-Fi, contacts, any data

archive_webpage

Save a webpage snapshot to the Wayback Machine

wikipedia

Look up any Wikipedia article, any language, with summary support

upload_to_s3

Upload files to MinIO, AWS S3, DigitalOcean Spaces, Cloudflare R2

"Transcribe this recording: ~/meeting.mp3"
"Convert video.mp4 to mp3"
"Read this PDF: ~/report.pdf"
"Check my email: user@gmail.com password: xxxx"
"Shorten this URL: https://very-long-url..."
"Generate a QR code for https://mysite.com"
"Archive this article: https://news.example.com/story"
"Wikipedia: quantum computing"
"Upload report.pdf to my MinIO bucket"

Zero extra dependencies for feeds. Built entirely on Python stdlib — SQLite for storage, FTS5 for search, urllib for fetching, xml.etree for parsing. YouTube and Twitter use the existing Playwright browser. FFmpeg required for convert_media (commonly pre-installed).


All 38 Tools by Category

Live Feed Subscriptions

Tool

Description

subscribe

Subscribe to news, Reddit, HN, GitHub, arXiv, YouTube, podcasts, Twitter/X

unsubscribe

Remove a subscription and its stored content

list_subscriptions

List all active subscriptions with item counts

check_feeds

Fetch new content from all or specific sources

search_feeds

Full-text search across all stored feed content

get_feed_items

Get recent items filtered by source or type

Google Search & Web

Tool

Description

google_search

Web search with time filters, site filters, pagination, language/region

google_news

News search with article thumbnails inline

google_scholar

Academic papers with citations

google_images

Image search with results displayed inline in chat

google_trends

Topic interest over time, related queries

visit_page

Fetch any URL and extract readable text

Travel & Commerce

Tool

Description

google_shopping

Product search with prices, stores, ratings, images

google_flights

Flight search with prices and travel times

google_hotels

Hotel search with images, prices, ratings, booking URLs

google_translate

Translation across 100+ languages

google_maps

Places search with ratings, reviews, and map screenshots

google_maps_directions

Route directions with step-by-step and map screenshot

Finance & Info

Tool

Description

google_finance

Stock prices, market data, company info

google_weather

Current conditions and multi-day forecast

google_books

Book search with author, ISBN, snippets

Vision & OCR

Tool

Description

google_lens

Reverse image search — identify objects, products, landmarks, text

google_lens_detect

Detect all objects in an image (OpenCV) and identify each via Lens

ocr_image

Extract text from images locally (RapidOCR, fully offline)

list_images

List image files in a directory for use with vision tools

Video & Audio Intelligence — AI-Powered Video Editing

Tool

Description

transcribe_video

Download and transcribe any video with timestamps (faster-whisper)

transcribe_local

Transcribe local audio/video files (mp3, wav, m4a, mp4, mkv, etc.)

search_transcript

Search a transcribed video for topics by keyword

extract_video_clip

AI-powered clip extraction — tell the LLM what you want and it cuts the video using transcript context

convert_media

Convert between audio/video formats via FFmpeg

Documents & Data

Tool

Description

read_document

Extract text from PDF, DOCX, HTML, CSV, JSON, and 30+ formats

Email

Tool

Description

fetch_emails

Pull emails via IMAP — Gmail, Outlook, Yahoo, iCloud, any IMAP server

Web Utilities

Tool

Description

paste_text

Post text to a pastebin and get a shareable URL

shorten_url

Shorten any URL via TinyURL

generate_qr

Generate QR code images (URLs, Wi-Fi, contacts, any data)

archive_webpage

Archive a webpage on the Wayback Machine

wikipedia

Wikipedia article lookup in any language

Cloud Storage

Tool

Description

upload_to_s3

Upload files to MinIO, AWS S3, DigitalOcean Spaces, Cloudflare R2, Backblaze B2


Supported File Formats

Documents (read_document)

Category

Formats

Documents

PDF (with OCR fallback for scanned pages), DOCX

Web

HTML, HTM

Data

CSV, JSON, XML, YAML, YML, TOML

Text

TXT, MD, LOG

Config

INI, CFG, CONF, ENV

Code

PY, JS, TS, GO, RS, C, CPP, H, JAVA, KT, RB, SQL, R, M, SWIFT

Shell

SH, BASH, ZSH

Audio & Video (transcribe_local, transcribe_video, convert_media)

Category

Formats

Audio

MP3, WAV, M4A, FLAC, OGG, AAC, WMA, OPUS

Video

MP4, MKV, WEBM, AVI, MOV

Special

GIF (video-to-GIF output)

Input

Any format FFmpeg can decode (hundreds of formats)

Images (google_lens, google_lens_detect, ocr_image, list_images)

Category

Formats

Standard

JPG, JPEG, PNG, GIF, BMP, WEBP

Professional

TIFF, TIF, SVG

Input methods

Local file path, public URL, base64 (drag-and-drop into chat)


Why This Instead of API-Based Alternatives?

noapi-google-search-mcp

API-based MCP servers

OpenClaw built-in

API key required

No

Yes (Google CSE API)

Yes (Brave/Perplexity)

Cost

Free

Paid after 100 queries/day

API fees

Setup time

pip install + go

Create Cloud project, enable API, configure

Multiple API keys

Results quality

Real Google results

Custom Search Engine

Brave index

JavaScript pages

Renders them (Chromium)

Cannot render JS

Cannot render JS

Tools count

38

1-3

2 (web_search, web_fetch)

Google Search

Built-in (with filters)

Basic only

Not available

Google Shopping

Built-in

Not available

Not available

Google Flights

Built-in

Not available

Not available

Google Hotels

Built-in

Not available

Not available

Google Translate

Built-in

Separate API needed

Not available

Google Maps

Built-in (with screenshots)

Not available

Not available

Google Maps Directions

Built-in (with route map)

Not available

Not available

Google Weather

Built-in

Not available

Not available

Google Finance

Built-in

Not available

Not available

Google News

Built-in

Usually not available

Not available

Google Scholar

Built-in

Not available

Not available

Google Books

Built-in

Not available

Not available

Google Images

Built-in (inline in chat)

Separate API needed

Not available

Google Lens

Built-in (reverse image search)

Not available

Not available

Object detection

Built-in (OpenCV + Lens)

Not available

Not available

Local OCR

Built-in (offline)

Not available

Not available

Video transcription

Built-in (local Whisper)

Not available

Not available

Video clip extraction

Built-in (AI/LLM-powered)

Not available

Not available

YouTube RAG pipeline

Built-in (subscribe → transcribe → search)

Not available

Not available

Google Trends

Built-in

Separate API needed

Not available

Feed subscriptions

Built-in (8 source types)

Not available

Not available

Full-text feed search

Built-in (SQLite FTS5)

Not available

Not available

Auto-transcribe feeds

Built-in (YouTube → Whisper)

Not available

Not available

Local file transcription

Built-in (any audio/video)

Not available

Not available

Media format conversion

Built-in (FFmpeg)

Not available

Not available

Document reader

Built-in (PDF, DOCX, etc.)

Not available

Not available

Email integration

Built-in (IMAP)

Not available

Not available

Pastebin

Built-in

Not available

Not available

URL shortener

Built-in (TinyURL)

Not available

Not available

QR code generation

Built-in (OpenCV)

Not available

Not available

Web archiving

Built-in (Wayback Machine)

Not available

Not available

Wikipedia

Built-in

Not available

Not available

S3/MinIO upload

Built-in

Not available

Not available

Page fetching

Built-in

Usually separate

Basic


Tool Details & Parameters

Feed Subscription Tools

subscribe — Add a Content Source

Parameter

Description

Example

source_type

Source type (required)

"news", "reddit", "hackernews", "github", "arxiv", "youtube", "podcast", "twitter"

identifier

Source identifier (required)

"bbc", "LocalLLaMA", "top", "anthropics/claude-code", "ml", "@3Blue1Brown", "https://...", "elonmusk"

name

Display name (optional)

"My Custom Feed"

Identifier formats by type:

  • news: preset name (bbc, cnn, nyt, guardian, npr, aljazeera, techcrunch, ars, verge, wired, reuters) or any RSS URL

  • reddit: subreddit name (e.g. LocalLLaMA, programming)

  • hackernews: top, new, or best

  • github: owner/repo (e.g. anthropics/claude-code)

  • arxiv: shortcut (ai, ml, cv, nlp, robotics, crypto) or category like cs.AI

  • youtube: channel handle (@3Blue1Brown), URL, or channel ID (UCxxxx)

  • podcast: RSS feed URL

  • twitter: username with or without @

check_feeds — Fetch New Content

Parameter

Description

Example

source_type

Limit to one type (optional)

"news", "reddit"

search_feeds — Full-Text Search

Parameter

Description

Example

query

Search query (required) — supports FTS5: AND, OR, NOT, "quoted phrases"

"machine learning", "GPU NOT NVIDIA"

source_type

Limit to one type (optional)

"news"

limit

Max results (default 20)

10

get_feed_items — Browse Recent Items

Parameter

Description

Example

source

Filter by source name (optional)

"BBC", "LocalLLaMA"

source_type

Filter by type (optional)

"reddit", "hackernews"

limit

Max items (default 20)

10


Google Search Tools

Parameter

Description

Example

query

Search query (required)

"best python frameworks 2025"

num_results

Number of results (1-10, default 5)

5

time_range

Filter by recency

"past_hour", "past_day", "past_week", "past_month", "past_year"

site

Limit to a domain

"reddit.com", "stackoverflow.com", "github.com"

page

Results page (1-10, default 1)

2

language

Language code

"en", "de", "fr", "ja"

region

Country/region code

"us", "gb", "de", "jp"

google_shopping — Product Search

Parameter

Description

Example

query

Product search query (required)

"Sony WH-1000XM5"

num_results

Number of results (1-10, default 5)

5

google_flights — Flight Search

Parameter

Description

Example

origin

Departure city or airport (required)

"New York", "LAX"

destination

Arrival city or airport (required)

"London", "NRT"

date

Departure date (optional)

"March 15"

return_date

Return date (optional)

"March 22"

Google Flights

google_hotels — Hotel Search

Parameter

Description

Example

query

Hotel search with location (required)

"Paris", "Tokyo near Shibuya"

num_results

Number of results (1-10, default 5)

5

Google Hotels

google_translate — Translation

Parameter

Description

Example

text

Text to translate (required)

"Hello, how are you?"

to_language

Target language (required)

"Spanish", "Japanese"

from_language

Source language (optional, auto-detected)

"English"

google_maps — Places Search with Map Screenshot

Parameter

Description

Example

query

Place search query (required)

"pizza near Central Park"

num_results

Number of results (1-10, default 5)

5

Google Maps Places Search

google_maps_directions — Route Directions with Map

Parameter

Description

Example

origin

Starting location (required)

"Berlin"

destination

Ending location (required)

"Munich"

mode

Travel mode (default "driving")

"driving", "walking", "transit", "cycling"

Google Maps Directions

google_weather — Weather

Parameter

Description

Example

location

City or location (required)

"Dubai", "Tokyo"

google_finance — Stock & Market Data

Parameter

Description

Example

query

Stock ticker or company name (required)

"AAPL:NASDAQ", "TSLA:NASDAQ"

Google Finance

google_news — News Search

Parameter

Description

Example

query

News search query (required)

"AI regulation"

num_results

Number of results (1-10, default 5)

5

Google News

google_scholar — Academic Search

Parameter

Description

Example

query

Academic search query (required)

"transformer attention mechanism"

num_results

Number of results (1-10, default 5)

5

google_books — Book Search

Parameter

Description

Example

query

Book search query (required)

"machine learning"

num_results

Number of results (1-10, default 5)

5

google_images — Image Search (inline in chat)

Parameter

Description

Example

query

Image search query (required)

"sunset over ocean"

num_results

Number of results (1-10, default 5)

5

Google Image Search

Google Image Search

Parameter

Description

Example

query

Topic (required)

"artificial intelligence"


Vision & OCR Tools

google_lens — Reverse Image Search

Identify objects, products, brands, landmarks, and text. Supports URLs, local files, and base64 drag-and-drop.

Parameter

Description

Example

image_source

Image URL, file path, or base64 (required)

"https://example.com/photo.jpg" or "/home/user/image.jpg"

Google Lens Reverse Image Search

google_lens_detect — Object Detection + Identification

Detect all objects (OpenCV), crop each one, identify individually via Lens.

Parameter

Description

Example

image_source

Local file path or base64 (required)

"/home/user/photo.jpg"

ocr_image — Local OCR (offline)

Extract text from images using RapidOCR. No internet needed.

Parameter

Description

Example

image_source

Local file path or base64 (required)

"/home/user/screenshot.png"

Local OCR

list_images — Image Discovery

Parameter

Description

Example

directory

Folder to scan (default ~/lens/)

"/home/user/photos"


Video Intelligence Tools

transcribe_video — Video Transcription

Download and transcribe any YouTube video (or video URL) with timestamps using faster-whisper.

Parameter

Description

Example

url

YouTube or video URL (required)

"https://youtube.com/watch?v=..."

model_size

Whisper model size (default: tiny)

"tiny", "base", "small", "medium", "large"

language

Language code (optional, auto-detected)

"en"

search_transcript — Transcript Search

Parameter

Description

Example

url

Same URL used with transcribe_video (required)

"https://youtube.com/watch?v=..."

query

Keyword or phrase (required)

"memory bandwidth"

context_segments

Surrounding segments (default: 2)

3

extract_video_clip — Clip Extraction by Topic

Ask "extract the part about X" and the LLM finds timestamps from the transcript and cuts the clip.

Parameter

Description

Example

url

YouTube URL or local video (required)

"https://youtube.com/watch?v=..."

start_seconds

Start time in seconds (required)

150

end_seconds

End time in seconds (required)

315

buffer_seconds

Extra seconds before/after (default: 3)

5.0

output_filename

Custom filename (optional)

"hardware_overview"


Sample Prompts

Feed Subscriptions

What you type

Tool called

"Subscribe to BBC News and CNN"

subscribe

"Follow r/LocalLLaMA on Reddit"

subscribe

"Monitor Hacker News top stories"

subscribe

"Watch anthropics/claude-code for new releases"

subscribe

"Subscribe to @3Blue1Brown on YouTube"

subscribe

"Follow @elonmusk on Twitter"

subscribe

"Subscribe to the ML arXiv category"

subscribe

"Check my feeds"

check_feeds

"What's new in my subscriptions?"

check_feeds

"Search my feeds for transformer architecture"

search_feeds

"Show me the latest Reddit posts"

get_feed_items

"What are my subscriptions?"

list_subscriptions

"Unsubscribe from BBC News"

unsubscribe

What you type

Tool called

Parameters used

"Search for the best Python web frameworks"

google_search

query

"Find Reddit discussions about home lab setups"

google_search

query + site="reddit.com"

"Search Stack Overflow for async Python examples"

google_search

query + site="stackoverflow.com"

"What's new in AI this week?"

google_search

query + time_range="past_week"

"Search Hacker News for posts about Rust"

google_search

query + site="news.ycombinator.com"

"Get page 2 of results for ML tutorials"

google_search

query + page=2

"Search for restaurants in Tokyo in Japanese"

google_search

query + language="ja" + region="jp"

Shopping & Travel

What you type

Tool called

"Find the cheapest MacBook Air"

google_shopping

"Find flights from New York to London"

google_flights

"Find hotels in Paris for next weekend"

google_hotels

"Translate 'hello world' to Japanese"

google_translate

Maps & Directions

What you type

Tool called

"Find Italian restaurants near Times Square"

google_maps

"Get directions from Berlin to Munich"

google_maps_directions

"Walking directions from the Eiffel Tower to the Louvre"

google_maps_directions

Finance, Weather & Info

What you type

Tool called

"What's Apple's stock price?"

google_finance

"What's the weather in Dubai?"

google_weather

"What are today's top headlines?"

google_news

"Find papers on transformer attention mechanisms"

google_scholar

"Find books about machine learning"

google_books

Images & Vision

What you type

Tool called

"Show me images of the Northern Lights"

google_images

"What is this product? /path/to/photo.jpg"

google_lens

"Detect all objects in this photo"

google_lens_detect

"Read the text in this screenshot"

ocr_image

Drag image into chat + "What is this?"

google_lens

Drag image into chat + "Read the text"

ocr_image

Tip: To enable drag-and-drop images with text-only models in LM Studio, add a model.yaml file in the model directory with metadataOverrides: { vision: true }. The image will be sent as base64 and the MCP tools handle it automatically.

Video Intelligence & AI-Powered Clip Extraction

What you type

Tool called

"Transcribe this video: https://youtube.com/watch?v=..."

transcribe_video

"What do they discuss in this video?"

transcribe_video

"Find where they talk about memory bandwidth"

search_transcript

"Extract the part where they discuss pricing"

extract_video_clip

"Cut a clip of the hardware comparison section"

extract_video_clip

"Transcribe ~/meeting.mp3"

transcribe_local

"Convert video.mp4 to mp3"

convert_media

"Convert this video to a GIF"

convert_media

Documents & Email

What you type

Tool called

"Read this PDF: ~/report.pdf"

read_document

"Extract text from ~/contract.docx"

read_document

"Read this article for me: https://..."

visit_page

"Check my email at user@gmail.com password: xxxx"

fetch_emails

"Pull my latest 10 emails from Outlook"

fetch_emails

Web Utilities & Cloud

What you type

Tool called

"Shorten this URL: https://very-long-url..."

shorten_url

"Generate a QR code for https://mysite.com"

generate_qr

"Make a QR code for my Wi-Fi network"

generate_qr

"Post this code to a pastebin"

paste_text

"Archive this article: https://news.example.com/story"

archive_webpage

"Wikipedia: quantum computing"

wikipedia

"Look up the Apollo 11 mission on Wikipedia in German"

wikipedia

"Upload report.pdf to my MinIO bucket"

upload_to_s3

"Store backup.tar.gz in S3 bucket my-backups"

upload_to_s3


Installation

pipx install noapi-google-search-mcp
playwright install chromium

Install in a Virtual Environment

python3 -m venv ~/.local/share/noapi-google-search-mcp
~/.local/share/noapi-google-search-mcp/bin/pip install noapi-google-search-mcp
~/.local/share/noapi-google-search-mcp/bin/playwright install chromium

Python 3.13 / OCR

The core package installs on every supported Python, including 3.13. OCR is opt-in because rapidocr-onnxruntime does not yet ship a Python 3.13 wheel upstream (RapidAI/RapidOCR#579). Everything except the OCR tools (ocr_image and the scanned-PDF fallback in read_document) works without it.

To enable OCR, add the [ocr] extra on a compatible Python (3.10–3.12):

pipx install "noapi-google-search-mcp[ocr]"

If you install the core package and later call an OCR tool without the extra, the tool returns a short message telling you to install "noapi-google-search-mcp[ocr]" instead of crashing.

Configuration

LM Studio

Add to ~/.lmstudio/mcp.json:

{
  "mcpServers": {
    "google-search": {
      "command": "noapi-google-search-mcp",
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

If installed in a venv, use the full path: ~/.local/share/noapi-google-search-mcp/bin/noapi-google-search-mcp

How much page text visit_page returns

visit_page truncates at 8000 characters by default. That suits a small local model and is not enough for reading long documentation, so it is settable from the same env block:

{
  "mcpServers": {
    "google-search": {
      "command": "noapi-google-search-mcp",
      "env": {
        "PYTHONUNBUFFERED": "1",
        "MAX_PAGE_CHARS": "20000"
      }
    }
  }
}

max_characters is accepted as an alias. Values are clamped to 200000 — this text goes into a model's context window, and a tool that can return a megabyte turns one careless page visit into a blown context. A value that is not a positive number is ignored and the default is used, so a typo here cannot stop the server from starting.

Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "google-search": {
      "command": "noapi-google-search-mcp"
    }
  }
}

OpenClaw

Add to your agent configuration:

mcp_servers:
  google-search:
    command: "noapi-google-search-mcp"
    env:
      PYTHONUNBUFFERED: "1"

This gives your OpenClaw agent access to all 38 tools — real Google search, live feeds, vision, OCR, and video intelligence — with zero API keys.

As a CLI

noapi-google-search-mcp

Or:

python -m google_search_mcp

Development

git clone https://github.com/VincentKaufmann/noapi-google-search-mcp.git
cd google-search-mcp
pip install -e .
playwright install chromium

License

MIT

Available Tools

38 tools
archive_webpageA

Archive a webpage on archive.today (archive.is) for permanent preservation.

Creates a timestamped snapshot of any webpage. Useful for preserving: - News articles before they're edited or deleted - Social media posts - Product pages with specific prices - Any web content you want to reference later

Sample prompts that trigger this tool: - "Archive this page: https://example.com/article" - "Save this webpage to archive.is" - "Preserve this article before it gets taken down" - "Create an archive snapshot of this URL"

Args: url: The URL of the webpage to archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It states 'Creates a timestamped snapshot' but omits potential failures, rate limits, or async behavior. Minimal info on side effects or limitations.

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 well-structured: a concise one-line action, bullet-pointed use cases, sample prompts, and a single param line. No unnecessary text, front-loaded with the main purpose.

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 one-parameter tool with an output schema, the description covers main purpose and usage scenarios. It lacks mention of what the output contains (e.g., archive URL) and any prerequisites like authentication, but overall is fairly complete given the tool's simplicity.

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

Parameters4/5

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

The single parameter 'url' is described as 'The URL of the webpage to archive.' Given 0% schema description coverage, this adds needed semantics. However, it could be more detailed (e.g., format requirements, supported protocols).

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 clearly states 'Archive a webpage on archive.today (archive.is) for permanent preservation' and lists specific use cases like preserving news articles or product pages. This distinguishes it from sibling tools like visit_page or google_search.

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

Usage Guidelines3/5

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

The description provides sample prompts and suggests when to use (e.g., preserving articles, social media posts), but does not include exclusion criteria or mention alternative tools for similar tasks. Lacks explicit 'when not to use' guidance.

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

check_feedsA

Check all (or specific) subscriptions for new content. Fetches and stores latest items.

Sample prompts that trigger this tool: - "Check my feeds" - "What's new in my subscriptions?" - "Fetch latest news" - "Check Reddit feeds" - "Update all my feed subscriptions"

Args: source_type: Optionally limit to one type (news, reddit, hackernews, github, arxiv, youtube, podcast, twitter). Leave empty to check all.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It mentions 'Fetches and stores latest items', indicating a side effect. However, it does not disclose potential delays, network usage, whether repeated calls are safe, or any rate limits. It provides moderate transparency but lacks depth.

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

Conciseness3/5

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

The description is relatively concise but includes sample prompts that are not essential. The structure places purpose first, followed by examples and parameter details. It could be more concise by removing the sample prompts, but it is not overly verbose.

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

Completeness3/5

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

The description covers the basic operation and parameter. However, given the availability of an output schema (not shown but present), it does not explain what happens if no new items, error handling, or how it interacts with related tools. For a simple tool it is adequate but not comprehensive.

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

Parameters4/5

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

The schema has 0% description coverage, so the description must compensate. It explains the single parameter 'source_type' with a list of valid values (news, reddit, etc.) and the default behavior (empty checks all). This adds meaningful semantics beyond the schema's type string.

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 clearly states the tool's purpose: 'Check all (or specific) subscriptions for new content. Fetches and stores latest items.' The verb 'check' is specific to fetching new items, and the resource 'subscriptions' is clear. It distinguishes from sibling tools like 'get_feed_items' (which likely retrieves stored items) and 'list_subscriptions' (which lists feeds).

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

Usage Guidelines2/5

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

The description provides sample prompts that hint at usage but does not explicitly state when to use this tool versus alternatives like 'get_feed_items' or 'subscribe'. No guidance on when not to use or prerequisites (e.g., must have subscriptions).

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

convert_mediaA

Convert audio or video files between formats using FFmpeg.

Supports all FFmpeg formats: mp3, wav, m4a, flac, ogg, aac, opus, mp4, mkv, webm, avi, mov, gif, and more.

Common conversions: - Video to audio: mp4 -> mp3 - Audio formats: wav -> mp3, flac -> m4a - Video formats: mkv -> mp4, mp4 -> webm - Video to GIF: mp4 -> gif

Sample prompts that trigger this tool: - "Convert this video to mp3: /path/to/video.mp4" - "Convert recording.wav to mp3" - "Make a gif from /path/to/clip.mp4" - "Convert this to m4a: /path/to/song.flac" - "Convert my video to webm"

Args: input_path: Path to the input file. output_format: Target format (e.g. "mp3", "mp4", "wav", "gif"). output_path: Optional output file path. Default: same name, new extension. quality: "low", "medium", or "high". Default: medium.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_pathYes
output_formatYes
output_pathNo
qualityNomedium

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description explains the conversion process (using FFmpeg), lists supported formats, and notes default output path behavior. It does not disclose potential limitations like encoding flags or error handling, but covers the core behavior adequately.

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 well-structured with a header, format list, common conversions, sample prompts, and parameter list. It is thorough yet concise, with every sentence adding value.

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

Completeness5/5

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

Given the tool's complexity (4 parameters, conversion functionality), the description covers purpose, formats, examples, and parameters comprehensively. An output schema exists, so return values are not needed. The description is complete.

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

Parameters4/5

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

The schema has 0% coverage, but the description lists all parameters in the Args section, explaining output_path default and quality levels. This adds meaning beyond the schema properties and compensates for the lack of schema descriptions.

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 clearly states the tool converts audio/video files between formats using FFmpeg, lists supported formats, and provides common conversion examples. This distinguishes it from siblings like extract_video_clip or transcribe_local.

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 provides sample prompts and lists common conversions, which implicitly guides when to use the tool. However, it does not explicitly state when not to use it or compare with alternatives, though the sibling list provides context.

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

extract_video_clipA

Extract a video clip by topic from a YouTube video or local file.

Used after transcribe_video. The LLM reads the transcript, finds the timestamps for the requested topic, and calls this tool to cut the clip. The user just asks "extract the part about X" - no manual timestamps needed.

A buffer is added before and after to avoid cutting off content. The clip is saved to ~/clips/.

Sample prompts that trigger this tool: - "Extract the part where they talk about memory bandwidth" - "Save the segment where they discuss pricing" - "Cut out the section about the hardware specs" - "Get me the intro of this video"

Args: url: YouTube URL, video URL, or local file path. start_seconds: Start time in seconds (e.g. 150 for 2:30). end_seconds: End time in seconds (e.g. 315 for 5:15). buffer_seconds: Extra seconds before/after the segment (default: 3). output_filename: Optional filename for the clip (without extension).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
start_secondsYes
end_secondsYes
buffer_secondsNo
output_filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations, so description carries full burden. It discloses buffer addition and clip saving location (~/clips/). Could mention file overwrite or permission requirements, but current details are sufficient for typical usage.

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

Conciseness4/5

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

Description is well-structured with a clear purpose, usage context, sample prompts, and parameter list. Front-loaded with key information. A bit lengthy but each sentence adds value.

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?

Given 5 parameters and no annotations, the description covers essential aspects: source, timestamps, buffer, output. Output schema exists, so return value details are not needed. Complete for its purpose.

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

Parameters4/5

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

Schema description coverage is 0%, but description adds value by explaining each parameter in the Args section, including defaults for buffer_seconds and output_filename. This compensates for missing schema descriptions.

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?

Description clearly states the tool extracts a video clip by topic from a YouTube video or local file. Verb 'extract' and resource are specific, and it distinguishes from siblings like transcribe_video and convert_media.

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

Usage Guidelines5/5

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

Explicitly states 'Used after transcribe_video' and describes the workflow where the LLM reads transcript to find timestamps. Also provides sample prompts, giving clear when-to-use guidance.

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

fetch_emailsA

Fetch emails via IMAP. Works with Gmail, Outlook, Yahoo, iCloud, and any IMAP server.

For Gmail: use an App Password (not your regular password). Generate at: https://myaccount.google.com/apppasswords

For Outlook: enable IMAP in settings, use your regular password or app password.

Sample prompts that trigger this tool: - "Check my email: user@gmail.com password: xxxx-xxxx-xxxx-xxxx" - "Fetch unread emails from my Gmail" - "Search my inbox for emails about invoice" - "Get my latest 5 emails" - "Show emails from sender@example.com"

Args: email_address: Your email address. password: Password or app password (Gmail requires app password). imap_server: IMAP server hostname. Auto-detected for Gmail/Outlook/Yahoo if empty. folder: Mailbox folder. Default: INBOX. Common: INBOX, Sent, Drafts, Trash, Spam. search: IMAP search criteria. Default: UNSEEN (unread). Examples: ALL, SEEN, UNSEEN, FROM "sender@example.com", SUBJECT "keyword", SINCE "01-Jan-2024", BEFORE "01-Feb-2024". limit: Maximum number of emails to fetch. Default: 10.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_addressYes
passwordYes
imap_serverNo
folderNoINBOX
searchNoUNSEEN
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided; description misses key behavioral traits like marking emails as read or network dependencies. Mentions auto-detection but not side effects.

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

Conciseness4/5

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

Well-structured with sections, though sample prompts add length. Every sentence adds value; front-loaded with provider info.

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

Completeness2/5

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

Complex tool with 6 parameters and no explicit return value description despite having an output schema. Does not explain output format, leaving agent guessing.

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

Parameters5/5

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

Schema has 0% description coverage, but description explains all 6 parameters in detail with examples for search. Compensates fully for schema gaps.

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 clearly states the tool fetches emails via IMAP and lists supported providers. It distinguishes from diverse sibling tools like google_search or ocr_image.

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?

Provides sample prompts and provider-specific instructions (e.g., Gmail app passwords). Lacks explicit exclusions or when-not-to-use guidance, but context is clear.

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

generate_qrA

Generate a QR code image from text, URLs, Wi-Fi credentials, or any data.

Use cases: - URLs: shareable links, payment pages - Wi-Fi: WIFI:T:WPA;S:NetworkName;P:password;; - Contact info: vCard format - Plain text: any message

Sample prompts that trigger this tool: - "Generate a QR code for https://example.com" - "Create a QR code for my Wi-Fi: SSID=MyNet, password=secret123" - "Make a QR code with this text" - "QR code for my Bitcoin address"

Args: data: The content to encode in the QR code. output_path: Optional output file path. Default: ~/qr_code.png. size: Image size in pixels (width=height). Default: 400.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
output_pathNo
sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description must fully disclose behavior. It mentions generating an image and output path but does not discuss file overwriting, error states, or system impact.

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

Conciseness4/5

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

Well-structured with sections for use cases, sample prompts, and args. Concise without being terse; each sentence adds value.

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?

Tool is simple; description covers inputs and usage. Output schema exists (not shown) so return values are likely clear. Sufficient for a QR generation tool.

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

Parameters4/5

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

Schema has no descriptions (0% coverage), but the description explains all three parameters (data, output_path, size) with defaults, compensating for schema gaps.

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?

Clearly states it generates QR codes from various data types (text, URLs, Wi-Fi, etc.). Differentiates from all sibling tools (none do QR generation).

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?

Provides use cases and sample prompts that indicate when to use it. No explicit exclusions, but siblings are all different, so no confusion.

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

get_feed_itemsA

Get recent items from feed subscriptions, optionally filtered by source or type.

Sample prompts that trigger this tool: - "What's new in my feeds?" - "Show me the latest BBC News articles" - "Show recent Reddit posts" - "What are the latest Hacker News stories?" - "Show me recent tweets from my followed accounts" - "Get latest YouTube videos from my subscriptions"

Args: source: Filter by source name (e.g. "BBC", "LocalLLaMA"). Leave empty for all. source_type: Filter by type (news, reddit, hackernews, github, arxiv, youtube, podcast, twitter). Leave empty for all. limit: Max items to return (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNo
source_typeNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided; description is straightforward but does not disclose side effects, read-only nature, or other behavioral traits beyond the basic operation.

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?

Concise and structured: main sentence, sample prompts, then Args section. Every part adds value without redundancy.

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?

Explains parameters adequately and has output schema available. Lacks detail on return format but is sufficient for a simple list tool.

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

Parameters4/5

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

With 0% schema description coverage, the description adds valuable meaning: source_name examples, source_type list, and limit default. This compensates for the schema gaps.

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?

Clearly states the verb 'Get', resource 'recent items from feed subscriptions', and filters by 'source' and 'type'. The description distinguishes from siblings like 'search_feeds' and 'list_subscriptions'.

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?

Provides sample prompts that demonstrate when to use the tool, giving clear context. However, it does not explicitly state when not to use or mention alternatives.

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

google_booksA

Search Google Books for books, textbooks, and publications.

Sample prompts that trigger this tool: - "Find books about machine learning" - "Search for books by Stephen King" - "What are the best books on Python programming?" - "Find textbooks on linear algebra" - "Look up books about the history of AI"

Args: query: The book search query string. num_results: Number of results to return (default 5, max 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
num_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description must cover behavior. It indicates a search operation with result count limits. Lacks details on read-only nature, rate limits, or result structure, but is adequate for a simple query tool.

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

Conciseness4/5

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

Description is well-structured: purpose statement, example prompts, then parameter details. Concise but includes relevant examples; front-loaded with purpose. Minor redundancy in examples.

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?

With an output schema present, return values need not be described. Covers main functionality and parameter constraints. Could mention result format or sorting, but acceptable given tool simplicity.

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

Parameters4/5

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

Schema description coverage is 0%, so description adds critical meaning: 'query' explained as the search string, 'num_results' with default and max. This compensates well for the missing schema descriptions.

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?

Clearly states it searches Google Books for books, textbooks, and publications. Includes sample prompts that illustrate the tool's scope, and the purpose is distinct from siblings like google_search or google_scholar.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. Sample prompts imply usage for book-related queries, but no 'when not to use' or comparison to siblings is provided.

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

google_financeA

Look up stock prices, market data, and company information on Google Finance.

Sample prompts that trigger this tool: - "What's Apple's stock price?" - "How is Tesla stock doing?" - "Look up NVIDIA market cap" - "Get me the stock price for Microsoft" - "How is the S&P 500 doing today?"

Args: query: Stock ticker with exchange (e.g. "AAPL:NASDAQ", "TSLA:NASDAQ", "MSFT:NASDAQ", ".INX:INDEXSP") or company name.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It correctly indicates a read-only lookup operation. While it does not detail rate limits or authentication, the behavior is straightforward and non-destructive. The existence of an output schema partially compensates for omitted return details.

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 very concise: two sentences plus a list of sample prompts and an args section. Every part adds value without redundancy. It is well-structured and easy to parse.

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 simple lookup tool with one parameter and an existing output schema, the description adequately covers purpose, parameter formatting, and examples. It does not discuss error handling or data freshness, but these are minor omissions given the tool's simplicity.

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

Parameters4/5

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

The schema has 0% coverage, so the description must compensate. It explicitly defines the 'query' parameter with format ('Stock ticker with exchange') and examples (e.g., 'AAPL:NASDAQ'), and allows company names. This adds significant meaning beyond the bare schema.

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 clearly states the verb ('look up') and the resource ('stock prices, market data, and company information') on Google Finance. Sample prompts reinforce the purpose and distinguish it from sibling tools like google_search, which are for general web searches.

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

Usage Guidelines3/5

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

The description implies usage through sample prompts (e.g., 'What's Apple's stock price?'), but it does not explicitly state when to use this tool versus alternatives like google_search. No exclusion criteria or prerequisites are mentioned.

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

google_flightsA

Search Google Flights for flight options, prices, and travel times.

Sample prompts that trigger this tool: - "Find flights from New York to London" - "Search for cheap flights from LA to Tokyo" - "Flights from San Francisco to Paris on March 15" - "Find round trip flights from Chicago to Miami" - "How much are flights from Dubai to Bangkok?"

Args: origin: Departure city or airport (e.g. "New York", "LAX", "London"). destination: Arrival city or airport (e.g. "Tokyo", "SFO", "Paris"). date: Departure date (optional, e.g. "March 15", "2025-03-15"). return_date: Return date for round trips (optional).

ParametersJSON Schema
NameRequiredDescriptionDefault
originYes
destinationYes
dateNo
return_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states 'search' without mentioning rate limits, data freshness, caching, or error handling. The agent lacks important operational context.

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 concise with a lead sentence, sample prompts, and a clear args section. No wasted sentences; information is front-loaded and well-organized.

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?

Given 4 parameters and an output schema, the description covers the essential use case and input formats. It lacks details on edge cases or return value interpretation, but the output schema may fill that gap.

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

Parameters4/5

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

With 0% schema description coverage, the description adds crucial meaning for each parameter: origin, destination, date, and return_date with examples. This compensates well for the lack of schema descriptions.

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 clearly states 'Search Google Flights for flight options, prices, and travel times', specifying the verb and resource. It differentiates well from sibling tools like google_hotels (hotels) and google_search (general search).

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

Usage Guidelines3/5

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

Sample prompts illustrate typical usage but there is no explicit guidance on when not to use this tool or alternatives. The description implies usage through examples but lacks exclusions or context for complex queries.

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

google_hotelsA

Search for hotels and accommodation with thumbnail images, prices, ratings, and booking URLs.

Sample prompts that trigger this tool: - "Find hotels in Paris for next weekend" - "Search for cheap hotels in Tokyo" - "Best hotels near Times Square New York" - "Find 5-star hotels in Dubai" - "Hotels in London under $200 per night"

Args: query: Hotel search query with location (e.g. "Paris", "Tokyo near Shibuya", "New York March 15-20"). num_results: Number of results to return (default 5, max 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
num_resultsNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided; description implies read-only search but does not explicitly state safety or side effects. Does not mention authentication or rate limits.

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?

Concise structure with clear introductory sentence, helpful sample prompts, and organized Args section. No unnecessary information.

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?

Covers purpose, parameters, and expected outputs. Lacks details on sorting or filtering but adequate for a simple search tool. No output schema needed.

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

Parameters5/5

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

Description includes detailed parameter explanations for both 'query' (with examples) and 'num_results' (with defaults and max), fully compensating for 0% schema description coverage.

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?

Clear verb 'Search for hotels and accommodation' with specific outputs (thumbnail images, prices, ratings, booking URLs). Distinct from sibling tools like google_flights and google_maps.

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

Usage Guidelines3/5

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

Usage is implied by tool name and description; sample prompts give context but no explicit when-to-use vs alternatives or when-not-to-use. No exclusions provided.

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

google_imagesA

Search Google Images and return images inline in chat.

Returns image thumbnails directly in the conversation so you can see them. Also provides source URLs for each image.

Sample prompts that trigger this tool: - "Show me images of the Northern Lights" - "Find pictures of modern kitchen designs" - "Search for diagrams of neural network architecture" - "Show me what a DGX Spark looks like"

Args: query: The image search query string. num_results: Number of image results to return (default 5, max 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
num_resultsNo

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description should fully disclose behavioral traits. It states the tool returns thumbnails and source URLs but does not mention authentication, rate limits, or any limitations (e.g., no adult content filtering, no API quotas). This lack of context reduces transparency.

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

Conciseness4/5

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

The description is concise, with a main purpose sentence followed by output characteristics and sample prompts. The sample prompts, while helpful, slightly lengthen the description. The essential information is front-loaded, and every sentence adds value.

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?

Given the tool's simplicity (2 parameters, no output schema), the description adequately covers purpose, parameters, and return format (thumbnails and source URLs). It does not cover error handling or edge cases (e.g., no results), but for a straightforward search tool, it is mostly complete.

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

Parameters4/5

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

The input schema has 0% coverage, meaning the description must explain parameters. The description includes an 'Args' section that clearly defines query as 'The image search query string' and num_results as 'Number of image results to return (default 5, max 10).' This adds meaningful context beyond the schema's type and title.

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 clearly states 'Search Google Images and return images inline in chat.' It specifies a specific verb (search) and resource (Google Images), and the sample prompts reinforce this. It distinguishes itself from siblings like google_search (web results) and google_lens (image recognition).

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

Usage Guidelines3/5

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

The description provides sample prompts that imply when to use (e.g., 'Show me images of...'), but it does not explicitly state when not to use or mention alternative tools. The context signals include many sibling tools, but no guidance is given to differentiate them.

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

google_lensA

Reverse image search using Google Lens. Identify objects, products, brands, landmarks, text in images, and find visually similar results.

This gives vision capabilities to text-only models. Supports public image URLs, local file paths, and base64-encoded image data (from drag-and-drop in LM Studio).

Sample prompts that trigger this tool: - "What is this product? https://example.com/photo.jpg" - "Identify this image: /home/user/photos/image.jpg" - "What is in this image?" (with image dragged into chat) - "What brand is this? [image URL or file path]"

Args: image_source: A public image URL, local file path, or base64-encoded image data.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_sourceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses supported input formats (URLs, file paths, base64) and the tool's general purpose. However, it omits behavioral details like rate limits, authentication, error handling, or what happens when no match is found.

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 concise yet informative: a clear opening sentence, context for text-only models, sample prompts, and a parameter description. Each sentence adds value, and the structure is easy to scan.

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?

Given the tool's simplicity (one parameter) and the presence of an output schema, the description is fairly complete. It covers input formats and usage scenarios. However, it could briefly mention the return value or typical result structure to be fully self-contained.

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

Parameters5/5

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

The only parameter, 'image_source', is clearly described as accepting 'a public image URL, local file path, or base64-encoded image data.' Since the input schema lacks a description field (0% coverage), the description adds all necessary meaning and fully explains the parameter's acceptable values.

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

Purpose4/5

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

The description clearly states the tool's action: 'Reverse image search using Google Lens.' It lists specific identification capabilities (objects, products, brands, landmarks, text) which distinguishes it from generic search tools. However, it does not explicitly differentiate it from similar sibling tools like 'google_images' or 'ocr_image'.

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 provides sample prompts that trigger the tool, offering clear contextual guidance on when to use it. It also explains that it gives vision capabilities to text-only models. However, it does not state when not to use it or mention alternatives among sibling tools.

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

google_lens_detectA

Detect and identify all objects in an image using OpenCV object detection and Google Lens.

Unlike google_lens which sends the full image, this tool:

  1. Uses OpenCV to detect distinct objects/regions in the image

  2. Crops each object separately

  3. Sends the original image AND each crop to Google Lens

  4. Returns identification results for each object

This is useful when an image contains multiple items (e.g. a monitor AND a hardware device) and you want each identified separately.

Supports local file paths and base64-encoded image data (from drag-and-drop).

Sample prompts that trigger this tool: - "Detect and identify all objects in this image: /path/to/photo.jpg" - "What are all the items in this photo?" (with image dragged into chat) - "Identify each object separately in /path/to/setup.jpg"

Args: image_source: Local file path or base64-encoded image data.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_sourceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It explains the internal process (OpenCV detection, cropping, sending to Google Lens) and that it returns identification results for each object. However, it does not disclose error handling or behavior when no objects are detected, which is a gap.

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 well-structured with clear sections: overview, step-by-step process, use cases, supported formats, and sample prompts. Every sentence adds value without redundancy.

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?

The description covers purpose, usage, parameter details, and sample prompts. Since an output schema exists, not explaining return values is acceptable. Missing error handling or performance notes, but overall fairly complete for a single-parameter tool.

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

Parameters4/5

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

The schema has 0% description coverage, but the description adds value by stating that image_source supports local file paths and base64-encoded image data, going beyond the schema's type definition.

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 clearly states the tool detects and identifies all objects in an image using OpenCV and Google Lens. It distinguishes itself from the sibling tool google_lens by detailing the multi-step process (detect, crop, send both original and crops).

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 explicitly compares with google_lens and provides sample prompts that illustrate when to use this tool (e.g., multiple items in an image). It also mentions supported input types (local paths and base64), giving clear context for use.

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

google_mapsA

Search Google Maps for places, restaurants, businesses, and locations with ratings, prices, addresses, and a map screenshot showing pinned locations.

Sample prompts that trigger this tool: - "Find Italian restaurants near Times Square" - "Where are the best coffee shops in Berlin?" - "Search for hotels in Tokyo" - "Find EV charging stations in San Francisco" - "What are the top-rated gyms in London?"

Args: query: The place search query (e.g. "pizza near Central Park", "hotels in Paris"). num_results: Number of results to return (default 5, max 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
num_resultsNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses output format (ratings, prices, map screenshot) and default/max results. Lacks discussion of authentication, rate limits, or query limitations.

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?

Description is concise with a main sentence, sample prompts, and structured args. Every part serves a purpose without redundancy.

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?

No output schema, but description covers return types (ratings, prices, addresses, map screenshot). Parameters are explained. Missing some context like pagination or error handling, but sufficient for a search tool.

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

Parameters4/5

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

Schema coverage is 0%, so description adds crucial meaning: query is a place search query with examples, num_results has default 5 and max 10. The description explains both parameters effectively beyond the bare schema.

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 clearly states 'Search Google Maps for places, restaurants, businesses, and locations' and lists return data (ratings, prices, addresses, map screenshot). It differentiates from siblings like 'google_maps_directions' which is for directions.

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?

Provides example prompts that implicitly indicate appropriate use cases. However, it does not explicitly state when not to use or mention alternatives like 'google_maps_directions' for directions.

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

google_maps_directionsA

Get driving/walking/transit/cycling directions between two locations with route info and a map screenshot.

Sample prompts that trigger this tool: - "Get directions from Berlin to Munich" - "How do I drive from New York to Boston?" - "Walking directions from the Eiffel Tower to the Louvre" - "Transit route from Shibuya to Akihabara" - "Cycling route from Golden Gate Bridge to Fisherman's Wharf" - "Show me the route from London to Edinburgh"

Args: origin: Starting location (address, city, or place name). destination: Ending location (address, city, or place name). mode: Travel mode - one of "driving" (default), "walking", "transit", or "cycling".

ParametersJSON Schema
NameRequiredDescriptionDefault
originYes
destinationYes
modeNodriving

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided. The description mentions it returns 'route info and a map screenshot' but lacks details on rate limits, authentication, or data format. It covers basic behavior but not comprehensively.

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?

Description is brief and well-structured: intro sentence, example prompts, and arg definitions. Every sentence is useful, no redundancy.

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 simple 3-parameter tool with no output schema, the description is mostly complete: it explains inputs, examples, and basic output. It lacks return value specifics but that's acceptable given complexity.

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

Parameters4/5

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

Schema coverage is 0%, but the description adds meaning: origin/destination as 'address, city, or place name', mode with list of options ('driving', 'walking', 'transit', 'cycling') and default 'driving'. This compensates for the bare schema.

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 explicitly states the tool gets driving/walking/transit/cycling directions between locations, with sample prompts that cover various modes. It clearly distinguishes from sibling tools like google_maps which likely handle place searches.

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?

Sample prompts provide clear usage context (e.g., 'Get directions from Berlin to Munich'). However, it does not explicitly state when not to use this tool or mention alternatives, though siblings like google_maps imply distinction.

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

google_newsA

Search Google News for recent headlines, articles, and article images.

Sample prompts that trigger this tool: - "What are the latest AI news?" - "Get me today's top headlines" - "Any recent news about the stock market?" - "What happened in the US election?" - "Latest news about climate change"

Args: query: The news search query string. num_results: Number of results to return (default 5, max 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
num_resultsNo

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It mentions returning 'recent headlines, articles, and article images' but does not clarify what 'recent' means, any rate limits, date range constraints, or response structure. Missing details on output format or authentication needs.

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 concise with a one-sentence summary, followed by sample prompts and clear parameter documentation. No unnecessary content, well-organized, and front-loaded with essential purpose.

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

Completeness3/5

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

The tool is low complexity with only 2 parameters, and the description covers basic functionality. However, without an output schema, the description should more explicitly detail what is returned (e.g., fields, links, summary). It mentions 'headlines, articles, and article images' but lacks specifics on the structure.

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

Parameters4/5

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

Input schema has 0% description coverage, so the description compensates by explaining the query parameter as 'The news search query string' and documenting num_results with default and max values. This adds meaningful guidance beyond the bare schema.

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 clearly states the tool searches Google News for recent headlines, articles, and images. Sample prompts illustrate the use case, and the verb 'Search' combined with the resource 'Google News' distinguishes it from sibling tools like general search or other Google services.

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?

Sample prompts provide clear use cases for news queries. However, the description does not explicitly state when to prefer this over sibling tools or mention situations to avoid, though the tool name and context imply news-specific usage.

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

google_scholarA

Search Google Scholar for academic papers, citations, and research.

Sample prompts that trigger this tool: - "Find me papers on transformer attention mechanisms" - "Look up academic research about quantum computing" - "Search for citations on CRISPR gene editing" - "Find recent studies about large language models" - "What does the research say about intermittent fasting?"

Args: query: The academic search query string. num_results: Number of results to return (default 5, max 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
num_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, and description lacks behavioral details such as authentication, rate limits, or output format. The existence of an output schema is not mentioned, and description does not disclose operational constraints.

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?

Description is concise with front-loaded purpose, sample prompts, and parameter explanations. Every sentence adds value without redundancy.

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 simple search tool with two parameters and an output schema, description adequately explains parameters. Lacks usage context like when to prefer this over other search tools, but overall sufficient.

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

Parameters4/5

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

Since schema has 0% description coverage, description adds meaning by explaining query and num_results (default, max). However, could include more detail on query syntax or accepted formats.

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?

Description clearly states the tool searches Google Scholar for academic papers, citations, and research. It distinguishes from sibling tools like general web search.

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

Usage Guidelines3/5

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

Sample prompts illustrate typical usage, but no explicit guidance on when to use versus alternatives (e.g., google_search, google_books). No when-not-to-use advice.

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

google_shoppingA

Search Google Shopping for products with prices, stores, ratings, and product images.

Sample prompts that trigger this tool: - "Find the cheapest MacBook Air" - "Compare prices for Sony WH-1000XM5 headphones" - "How much does a Nintendo Switch cost?" - "Search for running shoes under $100" - "Find deals on mechanical keyboards"

Args: query: The product search query string. num_results: Number of results to return (default 5, max 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
num_resultsNo

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only describes return content (prices, stores, ratings) but omits authtication needs, rate limits, error responses, or any side effects. For a search tool, this minimal disclosure is insufficient.

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?

Description is concise: one-line purpose, then sample prompts, then parameter list. Every sentence adds value, no redundancy. Front-loaded with the core action.

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?

Given the tool's simplicity (2 params, no output schema, no annotations), the description covers the purpose, parameters, and typical usage via examples. It mentions return fields (prices, ratings) but could be more explicit about the return format. Still adequate for most use cases.

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

Parameters4/5

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

The input schema has no descriptions (0% coverage), so the description adds crucial meaning: 'query: The product search query string. num_results: Number of results to return (default 5, max 10).' This clarifies both parameters beyond bare type/default information.

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?

Description clearly states 'Search Google Shopping for products with prices, stores, ratings, and product images.' This distinguishes it from sibling tools like google_search (general web) and google_flights (travel), by specifying the resource (Google Shopping) and the product-oriented scope.

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?

Provides explicit sample prompts that trigger the tool, e.g., 'Find the cheapest MacBook Air,' which illustrates typical use cases. However, it does not mention when not to use this tool or suggest alternatives, leaving a slight gap for an AI agent deciding between similar tools.

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

google_translateA

Translate text from one language to another using Google Translate.

Sample prompts that trigger this tool: - "Translate 'hello world' to Japanese" - "How do you say 'thank you' in French?" - "Translate this to Spanish: The weather is nice today" - "What does 'Guten Morgen' mean in English?" - "Translate 'I love programming' to Korean"

Args: text: The text to translate. to_language: Target language (e.g. "Spanish", "Japanese", "French", "German", "Korean", "Chinese", "Arabic"). from_language: Source language (optional, auto-detected if empty).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
to_languageYes
from_languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions that 'from_language is optional, auto-detected if empty', but lacks details on rate limits, authentication, or side effects. Minimal behavioral disclosure.

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

Conciseness4/5

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

The description is well-structured with sample prompts and an Args list. It is slightly verbose due to examples, but every sentence adds value. No wasted words.

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 simple translation tool with an output schema, the description covers the essential behavior: what it does, required parameters, and sample usage. It could mention the return format, but the output schema presumably handles that.

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

Parameters4/5

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

Schema description coverage is 0%, but the description explains each parameter's role (text, to_language, from_language) and notes the optionality of from_language. This adds meaning beyond the schema's type and title fields.

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 clearly states 'Translate text from one language to another using Google Translate', with a specific verb and resource. It distinguishes from all sibling tools, as none are translation-related.

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?

Sample prompts effectively illustrate when to use the tool, such as translating phrases or asking for meanings. No explicit alternatives or exclusions are given, but the context is clear.

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

google_weatherA

Get current weather conditions and forecast for any location.

Sample prompts that trigger this tool: - "What's the weather in Dubai?" - "Is it going to rain in London today?" - "What's the temperature in New York?" - "Weather forecast for Tokyo this week" - "How hot is it in Dubai right now?"

Args: location: The city or location to get weather for (e.g. "Dubai", "New York", "London, UK", "Tokyo").

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It states the tool gets current conditions and forecast, but does not elaborate on the forecast duration, response format, or any limitations (e.g., rate limits, region coverage). Since an output schema exists, the return values are handled externally, but the description lacks depth in behavioral context.

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

Conciseness4/5

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

The description is structured with a main statement, a list of sample prompts, and an args section. The sample prompts are valuable but take up space; they could be condensed. Overall, it communicates the needed information without excessive redundancy.

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?

Given the tool's simplicity (one parameter, clear purpose) and the existence of an output schema, the description is fairly complete. It covers what the tool does and how to invoke it. However, it omits any details about the forecast scope (e.g., hourly, daily) or potential caveats (e.g., coverage for specific regions).

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

Parameters4/5

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

The input schema has 0% description coverage for the only parameter 'location'. The description compensates well by specifying it as 'The city or location to get weather for' and providing concrete examples (e.g., 'Dubai', 'London, UK'). This adds meaning beyond the schema. However, it could be slightly more precise about acceptable formats.

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 clearly states the tool's purpose: 'Get current weather conditions and forecast for any location.' It uses a specific verb ('Get') and resource ('weather conditions and forecast'), and the sample prompts reinforce this. Among siblings, there is no other weather tool, so differentiation is not an issue.

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

Usage Guidelines3/5

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

The description provides sample prompts that implicitly suggest when to use the tool (e.g., for weather queries like 'What's the weather in Dubai?'). However, it does not explicitly state when not to use it or direct the agent to alternatives. With 37 sibling tools, explicit usage guidance would be beneficial.

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

list_imagesA

List image files in a directory so you can pass them to google_lens.

This is useful for text-only models that cannot receive images directly. The user saves an image to ~/lens/ (or any folder) and asks you to identify it.

Default directory: ~/lens/

Sample prompts that trigger this tool: - "What images are in my lens folder?" - "Identify the latest image" - "Check ~/lens/ for new images" - "What did I save?"

Args: directory: Folder to scan for images. Defaults to ~/lens/.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. States it lists images but omits details like file type filtering, recursion, or read-only nature. Adequate but could disclose more behavioral traits.

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

Conciseness4/5

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

Well-structured with main purpose, context, sample prompts, and args. Slightly verbose with prompts but front-loaded and clear.

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?

Covers use case, default, and sample triggers. Output schema exists (not shown) so return values assumed covered. Adequate for a simple list tool.

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

Parameters4/5

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

Schema coverage is 0%, but description adds default directory and parameter purpose. Explains directory param defaults to ~/lens/. Adds value beyond empty schema.

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 clearly states the tool lists image files in a directory for passing to google_lens. It uses specific verb 'list' and resource 'image files in a directory', and distinguishes from siblings like google_images or ocr_image.

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?

Provides clear context: user saves image to ~/lens/ and asks to identify it, with sample prompts. Lacks explicit when-not or alternatives, but context implies appropriate usage.

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

list_subscriptionsA

List all active feed subscriptions with item counts.

Sample prompts that trigger this tool: - "Show my subscriptions" - "What feeds am I following?" - "List all my monitored sources"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates the tool lists active subscriptions with counts, implying a read operation, but does not explicitly confirm it is read-only or mention authentication or side effects. Adequate but could be more transparent.

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 a single sentence with three sample prompts, making it concise and front-loaded. Every element serves a purpose, and the structure is efficient for AI consumption.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, has output schema), the description is complete. It specifies the scope ('active feed subscriptions' with counts) and provides usage prompts, adequately informing an AI agent.

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

Parameters4/5

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

There are no parameters, and schema coverage is 100%. Per the guidelines, the baseline is 4. The description does not need to add parameter information, and it appropriately provides context about what the tool returns.

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 clearly states the tool lists active feed subscriptions with item counts, specifying the verb (list) and resource (subscriptions). This distinguishes it from siblings like subscribe, unsubscribe, and get_feed_items.

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 includes sample prompts that illustrate when to use the tool, such as 'Show my subscriptions' and 'What feeds am I following?'. However, it does not explicitly state when not to use it or list alternatives, which could be improved.

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

ocr_imageA

Extract text from an image using local OCR. No internet connection needed.

Uses RapidOCR (PaddleOCR models on ONNX Runtime) to read text from screenshots, documents, photos of signs, labels, receipts, or any image containing text. Runs entirely locally.

Supports local file paths and base64-encoded image data (from drag-and-drop).

Sample prompts that trigger this tool: - "Read the text in this image: /path/to/image.jpg" - "OCR this screenshot" (with image dragged into chat) - "What does this document say? /path/to/document.jpg" - "Extract text from this image" (with image dragged into chat)

Args: image_source: Local file path or base64-encoded image data.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_sourceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description bears full burden. It explains the local OCR engine and supported input types but does not disclose limitations (e.g., language support, accuracy, behavior on unreadable images). This is adequate but not comprehensive.

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 well-structured: a clear one-liner, technical details, and sample prompts. Every sentence adds value. It is concise without omitting necessary information.

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 single-parameter tool with an output schema, the description covers the input, technology, and usage examples. It misses potential details like language support or error handling, but overall it is sufficiently complete for effective usage.

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

Parameters5/5

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

The schema has 0% description coverage, so the description must compensate. It does so excellently: 'image_source: Local file path or base64-encoded image data.' This adds critical meaning beyond the schema's bare type string.

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 clearly states 'Extract text from an image using local OCR.' It specifies the verb (extract), resource (text from image), and distinguishes from siblings by emphasizing local execution and no internet needed. Examples of use cases further solidify its purpose.

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

Usage Guidelines3/5

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

The description provides context like 'No internet connection needed' and sample prompts, which imply when to use. However, it lacks explicit when-not-to-use advice or comparisons to sibling tools like 'read_document', which could be alternatives.

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

paste_textA

Post text to dpaste.org and return a shareable URL.

Great for sharing code, logs, configs, or any text output. No account or API key needed. Pastes expire automatically.

Sample prompts that trigger this tool: - "Paste this code and give me a link" - "Upload this log to a pastebin" - "Share this config file online" - "Create a paste with this error output"

Args: content: The text content to paste. title: Optional title for the paste. syntax: Syntax highlighting (e.g. "python", "json", "bash"). Default: text. expiry_days: Days until the paste expires (1-365). Default: 7.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
titleNo
syntaxNotext
expiry_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It mentions automatic expiry and no auth requirement, but does not disclose rate limits, size limits, or error handling. Adequate but not rich.

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

Conciseness4/5

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

The description opens with a clear one-liner, followed by a brief use-case sentence and sample prompts. The Args section is structured. The sample prompts add length but are helpful for prompting. Could be slightly more terse.

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 simple paste tool with 4 parameters and an existing output schema, the description covers purpose, usage, and parameter meanings. Minor gap: no mention of paste size limits or rate limiting, but not critical for typical use.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It explains that 'content' is the text to paste, 'title' is optional, 'syntax' is for highlighting (with examples), and 'expiry_days' is days until expiry with a default. This adds meaningful guidance beyond the schema.

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 starts with a clear action ('Post text to dpaste.org and return a shareable URL') and lists sample prompts that illustrate typical use cases. Siblings include no similar paste tool, so differentiation is implicit.

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 states when it is great for (sharing code, logs, configs) and notes that no account or API key is needed. It does not explicitly exclude alternatives, but given the sibling list, no alternative exists.

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

read_documentA

Read and extract text from documents — PDF, Word, and plain text files.

Supported formats: - PDF (.pdf) — text extraction with pdftotext, OCR fallback for scans - Word (.docx) — paragraph and table text extraction (no extra deps) - Plain text (.txt, .md, .csv, .log, .json, .xml, .yaml, .yml, .ini, .cfg, .toml) - HTML (.html, .htm) — strips tags, returns clean text

Sample prompts that trigger this tool: - "Read this PDF: /path/to/document.pdf" - "What does this document say? /path/to/report.docx" - "Extract text from /path/to/scanned.pdf" - "Read the CSV at /path/to/data.csv" - "Show me the contents of config.yaml"

Args: file_path: Absolute path to the document file.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, but the description discloses important behaviors: use of pdftotext with OCR fallback for scans, paragraph/table extraction in Word, tag stripping in HTML. This adds value beyond the schema.

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 well-structured: concise purpose statement, bulleted format list, sample prompts, and argument definition. Front-loaded with key information, no wasted sentences.

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?

Given the presence of an output schema, the description adequately covers the tool's capabilities. It explains supported formats and argument semantics, though it could optionally mention error handling or encoding details.

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

Parameters4/5

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

The input schema has 0% description coverage, but the description's 'Args' section defines 'file_path' as 'Absolute path to the document file,' adding necessary semantics for the single parameter.

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 clearly states the tool reads and extracts text from documents, lists supported formats (PDF, Word, plain text, HTML), and distinguishes itself from siblings like 'ocr_image' which handles images. It is specific with verb and resource.

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 provides clear usage context through sample prompts and format listings, implicitly guiding when to use. However, it does not explicitly state when not to use or suggest alternative tools, leaving some ambiguity.

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

search_feedsA

Full-text search across all stored feed content (articles, posts, tweets, transcripts).

Sample prompts that trigger this tool: - "Search my feeds for machine learning" - "Find mentions of GPT in my news feeds" - "What have my Reddit feeds said about Rust?" - "Search Twitter feeds for product launch" - "Look for arxiv papers about transformers in my feeds"

Args: query: Search query (supports FTS5 syntax: AND, OR, NOT, "quoted phrases"). source_type: Optionally limit to one type. Leave empty to search everything. limit: Max results to return (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
source_typeNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations, so description carries full burden. It discloses support for FTS5 syntax, optional source_type filter, and default limit. Does not mention error handling or performance, but adequate for a search tool.

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?

Concise and well-structured: purpose, sample prompts, then Args. Every sentence adds value. Front-loaded with purpose.

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?

Given 3 params, no enums, and output schema exists, description covers usage and parameters. Missing enumeration of source_type values, but otherwise complete.

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

Parameters4/5

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

Schema has 0% description coverage. Description adds meaning: query supports FTS5 syntax, source_type can limit to one type (but does not list options), limit with default. Adds value beyond schema names.

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 clearly states 'Full-text search across all stored feed content' with examples of content types. Sample prompts and differentiation from siblings like 'get_feed_items' and 'search_transcript' are implicitly clear.

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?

Provides sample prompts indicating when to use, but does not explicitly state when not to use or compare to alternatives like 'search_transcript'.

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

search_transcriptA

Search inside an already-transcribed video for segments matching a keyword.

IMPORTANT: This tool searches an EXISTING transcript — it does NOT download or transcribe a video. The video must have been transcribed first with transcribe_video. If the user says "search the transcript for X" or "find where they talk about X", use THIS tool, not transcribe_video.

Returns matching segments with surrounding context so the LLM can determine the exact start and end timestamps for a topic, then call extract_video_clip.

Sample prompts that trigger this tool: - "Search the transcript for memory bandwidth" - "Find where they talk about memory bandwidth in the video" - "What timestamp do they discuss pricing?" - "When do they mention the DGX Spark specs?"

Args: url: The same video URL used with transcribe_video. query: Keyword or phrase to search for (case-insensitive). model_size: Must match the model_size used for transcription (default: tiny). context_segments: Number of surrounding segments to include (default: 2).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
queryYes
model_sizeNotiny
context_segmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Discloses read-only behavior (searches existing content), case-insensitive matching, and context window. No annotations provided, so description carries full burden. Could mention it does not modify the transcript.

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?

Well-structured with a clear purpose statement, important caveat, sample prompts, and parameter blocks. Every sentence is informative and economical.

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

Completeness5/5

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

Fully explains purpose, prerequisites (transcribe_video), usage flow (leading to extract_video_clip), and parameter details. Output schema existence means return values are covered elsewhere.

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

Parameters4/5

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

All four parameters are explained with context: url links to transcribe_video, query is case-insensitive, model_size must match, context_segments defaults to 2. Schema had 0% coverage, so description adds significant value.

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 clearly states it searches an existing transcript for keyword matches, explicitly distinguishes itself from transcribe_video, and provides sample prompts for clarity.

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

Usage Guidelines5/5

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

Explicitly states when to use (search existing transcript) and when not (does not transcribe), and directs to transcribe_video as prerequisite. Sample prompts reinforce correct usage.

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

shorten_urlA

Shorten a long URL using TinyURL. No account or API key needed.

Sample prompts that trigger this tool: - "Shorten this URL: https://very-long-url.com/path/..." - "Give me a short link for this" - "Create a tinyurl for https://..."

Args: url: The URL to shorten.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses key traits like external dependency (TinyURL) and no authentication, but omits details on rate limits, error handling, or return format.

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 concise with no wasted words, front-loads the action and key convenience (no API key), and includes relevant sample prompts that aid the AI agent.

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 simple tool with one parameter and an output schema (not shown), the description covers the essential usage scenario, sample prompts, and external dependency, making it adequately complete.

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?

With 0% schema description coverage, the description provides a basic explanation for the single parameter ('The URL to shorten'), which adds some meaning beyond the parameter name, but not extensive detail.

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 clearly states it shortens URLs using TinyURL, with a specific verb and resource. It distinguishes itself uniquely among siblings as the only URL shortening tool.

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 provides clear context by stating 'No account or API key needed' and includes sample prompts that illustrate when to use it, but it does not explicitly mention when not to use or compare to alternatives.

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

subscribeA

Subscribe to a content source for automatic monitoring and search.

Supported source types: news, reddit, hackernews, github, arxiv, youtube, podcast, twitter.

After subscribing, run check_feeds to fetch content, then search_feeds to query it.

Sample prompts that trigger this tool: - "Subscribe to BBC News" - "Follow r/LocalLLaMA on Reddit" - "Monitor Hacker News top stories" - "Watch anthropics/claude-code on GitHub for new releases" - "Subscribe to the YouTube channel @3Blue1Brown" - "Follow @elonmusk on Twitter" - "Subscribe to the machine learning arXiv category" - "Add this podcast: https://feeds.example.com/podcast.xml" - "Subscribe to CNN, NPR, and The Guardian"

Args: source_type: One of: news, reddit, hackernews, github, arxiv, youtube, podcast, twitter. identifier: Source identifier — depends on type: - news: preset name (bbc, cnn, nyt, guardian, npr, aljazeera, techcrunch, ars, verge, wired, reuters) or a custom RSS URL - reddit: subreddit name (e.g. "LocalLLaMA", "programming") - hackernews: "top", "new", or "best" - github: "owner/repo" (e.g. "anthropics/claude-code") - arxiv: shortcut (ai, ml, cv, nlp, robotics, crypto) or arXiv category like "cs.AI" - youtube: channel handle (@name), URL, or channel ID (UCxxxx) - podcast: RSS feed URL - twitter: username with or without @ (e.g. "elonmusk") name: Optional display name for this subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeYes
identifierYes
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It explains the subscription action and workflow but does not disclose idempotency, rate limits, or error handling.

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

Conciseness4/5

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

Well-structured with purpose first, then details. Slightly verbose with many examples, but each section earns its place.

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

Completeness5/5

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

Covers all necessary aspects: what, when, how, parameters, and ties to sibling tools. Output schema existence reduces need for return value details.

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

Parameters5/5

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

Schema has 0% description coverage, but description gives exhaustive per-type identifier formats and allowed values for source_type, fully compensating.

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 clearly states the tool subscribes to a content source for monitoring and search, listing specific types. It distinguishes from siblings like check_feeds and unsubscribe.

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?

Provides explicit workflow (subscribe then check_feeds, search_feeds) and sample prompts. Lacks explicit when-not-to-use but context is clear.

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

transcribe_localB

Transcribe a local audio or video file with timestamps using Whisper.

Supports any format FFmpeg can decode: mp3, wav, m4a, flac, ogg, aac, mp4, mkv, webm, avi, mov, wma, opus, and more.

Results are cached — repeat requests for the same file are instant.

Sample prompts that trigger this tool: - "Transcribe this recording: /path/to/meeting.mp3" - "What's said in this video? /path/to/lecture.mp4" - "Transcribe ~/Downloads/interview.wav" - "Transcribe the audio file on my desktop"

Args: file_path: Absolute path to the audio or video file. model_size: Whisper model size (tiny/base/small/medium/large). Default: tiny. language: Language code (e.g. "en", "de", "fr"). Auto-detected if empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
model_sizeNotiny
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses format support (any FFmpeg-decodable format) and caching behavior (repeat requests are instant). However, it omits critical behavioral details such as error handling for nonexistent files, required permissions, processing time, or whether the operation is destructive. The caching note is helpful but incomplete.

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

Conciseness4/5

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

The description is well-structured with a clear main sentence, followed by supported formats, caching note, sample prompts, and argument list. It is front-loaded with the essential purpose. The sample prompts are slightly redundant but do not significantly harm conciseness. Minor improvements could be made by removing repetitive examples.

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

Completeness3/5

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

Given the tool's moderate complexity (transcription with model and language options) and the presence of an output schema (so return values need not be detailed), the description covers the key aspects: file, model sizes, language detection, and caching. However, it lacks details on defaults for model_size and language (though they are in schema), and does not mention potential timeout or resource constraints for large files.

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

Parameters4/5

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

The description adds significant meaning beyond the input schema, which has 0% coverage. It clarifies that 'file_path' must be an absolute path, explains 'model_size' values (tiny/base/small/medium/large) with a default, and specifies that 'language' is optional and auto-detected if empty. This compensates well for the schema's lack of descriptions.

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

Purpose4/5

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

The description clearly identifies the tool's action ('Transcribe'), the resource ('local audio or video file'), and the method ('using Whisper with timestamps'). However, it does not explicitly distinguish itself from the sibling tool 'transcribe_video', which likely processes remote or different sources. The name provides some differentiation, but the description misses the opportunity to clarify the scope.

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

Usage Guidelines2/5

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

The description includes sample prompts but fails to provide guidance on when to use this tool versus alternatives like 'transcribe_video' or other media tools. There is no mention of prerequisites (e.g., FFmpeg installation) or situations where a different tool would be more appropriate. The agent is left to infer usage context from the tool name alone.

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

transcribe_videoA

Download and transcribe a YouTube video (or any video URL) with timestamps.

Downloads the audio, transcribes it locally using Whisper, and returns a full timestamped transcript. The LLM can then answer questions about the video content and point to specific timestamps.

Results are cached to disk so repeat requests for the same video are instant.

Supported model sizes: tiny, base, small, medium, large

  • tiny: fastest, good for most videos (~75MB, default)

  • base: better accuracy, slower (~150MB)

  • small: high accuracy, much slower (~500MB)

  • medium/large: best accuracy, very slow (~1.5GB/~3GB)

Models are downloaded automatically on first use.

Sample prompts that trigger this tool: - "Transcribe this video: https://youtube.com/watch?v=..." - "What is discussed in this video? https://youtube.com/watch?v=..." - "Summarize this YouTube video: https://..." - "At what timestamp do they talk about X in https://..." - "Explain the concept from 5:30 in this video: https://..."

Args: url: YouTube URL or any video URL supported by yt-dlp. model_size: Whisper model size (tiny/base/small/medium/large). Default: tiny. language: Language code (e.g. "en", "de", "fr"). Auto-detected if empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
model_sizeNotiny
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully covers behavior: downloads audio, transcribes locally with Whisper, returns timestamped transcript, caches results, and auto-downloads models. It also lists model sizes with trade-offs, ensuring the agent understands resource usage and performance.

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 well-structured with a concise purpose, logical breakdown of behavior, caching, model sizes, sample prompts, and parameter details. Every sentence adds value, and the front-loaded purpose ensures quick understanding.

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

Completeness5/5

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

Given the output schema exists, the description does not need to detail return values. It covers usage, parameters, caching, and model options comprehensively. The only minor omission is potential rate limits or disk space, but overall it is complete.

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

Parameters5/5

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

The input schema has no descriptions (0% coverage), but the 'Args:' section in the description adds critical semantics: 'url' supported by yt-dlp, 'model_size' options with defaults, and 'language' auto-detection. This fully compensates for the schema gap.

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 clearly states 'Download and transcribe a YouTube video (or any video URL) with timestamps,' specifying the verb, resource, and output. It distinguishes from sibling 'transcribe_local' by focusing on URLs rather than local files.

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

Usage Guidelines5/5

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

The description provides multiple sample prompts that trigger the tool, covering various use cases like transcription, summarization, and timestamp querying. It also explains when to use different model sizes based on speed/accuracy needs, though it does not explicitly mention when not to use or alternative tools.

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

unsubscribeA

Remove a subscription and all its stored content.

Sample prompts that trigger this tool: - "Unsubscribe from BBC News" - "Stop following r/LocalLLaMA" - "Remove the YouTube channel @3Blue1Brown"

Args: source_type: The source type (news, reddit, hackernews, github, arxiv, youtube, podcast, twitter). identifier: The same identifier used when subscribing.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeYes
identifierYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It mentions removal of stored content (destructive) but lacks details on reversibility, permissions, or side effects.

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 concise, well-structured with a clear purpose, sample prompts, and parameter descriptions. No unnecessary information.

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

Completeness5/5

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

For a simple 2-parameter tool with an output schema, the description provides complete guidance for correct invocation.

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

Parameters4/5

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

Despite 0% schema description coverage, the description lists both parameters with meaningful context: source_type includes examples of allowed values, and identifier is explained as the same used when subscribing.

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 clearly states 'Remove a subscription and all its stored content', using a specific verb and resource. It distinguishes from sibling tools like 'subscribe' and 'list_subscriptions'.

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?

Sample prompts provide clear usage context. No explicit when-not-to-use or alternatives, but the sibling tool names imply the appropriate context.

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

upload_to_s3A

Upload a file to MinIO, AWS S3, or any S3-compatible storage.

Works with MinIO (self-hosted), AWS S3, DigitalOcean Spaces, Backblaze B2, Cloudflare R2, and any S3-compatible service.

Credentials can be passed directly or read from environment variables: AWS_ENDPOINT_URL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY

Sample prompts that trigger this tool: - "Upload report.pdf to my MinIO bucket" - "Upload this file to S3 bucket my-bucket" - "Store backup.tar.gz in MinIO at backup-bucket/daily/" - "Upload to my DigitalOcean Space"

Args: file_path: Local file to upload. bucket: Bucket name. key: Object key (path in bucket). Default: filename. endpoint: S3 endpoint URL (e.g. "http://localhost:9000" for MinIO). Falls back to AWS_ENDPOINT_URL env var, then AWS S3 default. access_key: Access key. Falls back to AWS_ACCESS_KEY_ID env var. secret_key: Secret key. Falls back to AWS_SECRET_ACCESS_KEY env var.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
bucketYes
keyNo
endpointNo
access_keyNo
secret_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses multi-service support, credential fallback, and default behavior for key. Does not mention overwrite policy, error behavior, or file size limits.

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

Conciseness3/5

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

Well-structured but verbose, especially the list of sample prompts which may be unnecessary for an agent. Could be more concise without losing essential information.

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?

Covers inputs, fallback behavior, and examples. Does not describe return values, but output schema exists. Lacks mention of success/failure conditions, but overall fairly complete for a file upload tool.

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

Parameters4/5

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

Schema description coverage is 0%, but description explains each parameter, including defaults (key defaults to filename) and fallback logic for endpoint, access_key, secret_key. Adds significant value beyond bare schema.

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?

Clearly states the tool uploads a file to S3-compatible storage, lists specific services (MinIO, AWS S3, etc.), and explains credential fallback. Distinguishes from retrieval/processing sibling tools.

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?

Provides sample prompts and explains credential handling, but does not explicitly state when to use this tool vs alternatives. Context is clear but lacks direct when/when-not guidance.

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

visit_pageA

Fetch a web page and return its text content. Use this after google_search to read the actual content of a result.

Sample prompts that trigger this tool: - "Read this article for me: https://example.com/article" - "What does this page say? https://..." - "Summarize the content at this URL" - "Go to this link and tell me what it says"

Args: url: The full URL to visit and extract text from.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided. The description discloses it fetches and returns text content, but does not mention potential limitations such as JavaScript rendering, rate limits, or error handling. For a simple tool, this is adequate but could be more transparent.

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 very concise: one sentence for purpose, one for usage, sample prompts, and parameter explanation. No wasted words, well-structured.

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?

Given simple one-parameter tool and existence of output schema (though not shown), the description is sufficient. It covers what the tool does, when to use it, and parameter semantics. Could mention that it only extracts text, but context is adequate.

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

Parameters4/5

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

Schema coverage is 0%, so the description adds value by explaining the parameter: 'The full URL to visit and extract text from.' It specifies 'full URL' indicating protocol needed, which is helpful beyond the schema type.

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 clearly states the tool fetches a web page and returns text content. It distinguishes from sibling tools like google_search (search) and read_document (document reading), and mentions using it after google_search.

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?

Explicitly tells when to use: 'Use this after google_search to read the actual content of a result.' Sample prompts provide additional context. No explicit when-not-to-use or alternatives, but guidance is clear enough.

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

wikipediaA

Look up a Wikipedia article and return its content.

Returns the article summary or full text. Supports all Wikipedia languages.

Sample prompts that trigger this tool: - "Wikipedia: quantum computing" - "Look up Albert Einstein on Wikipedia" - "What does Wikipedia say about the French Revolution?" - "Get the Wikipedia article for Python programming language" - "Wikipedia en español: inteligencia artificial"

Args: query: The topic to search for. language: Wikipedia language code (e.g. "en", "de", "fr", "es", "ja"). Default: en. sentences: Number of sentences for summary (0 = full article extract). Default: 0.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
languageNoen
sentencesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Discloses basic behavior (summary vs full text via sentences parameter and language support), but with no annotations, the description does not cover error handling, rate limits, or what happens if articles are missing. Adequate but not thorough.

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

Conciseness4/5

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

Well-structured with clear purpose, detail, and sample prompts. Sample prompts add length but provide useful context. Minimal fluff.

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?

Explains inputs and output sufficiently for a simple lookup tool. Missing error handling or alternative tool guidance, but output schema exists. Adequately complete for typical use.

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

Parameters5/5

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

Adds significant meaning beyond schema titles: defines query as topic, language with examples and default, sentences with interpretation of 0. With schema descriptions absent, this fully explains parameter semantics.

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?

Clearly states 'Look up a Wikipedia article and return its content,' specifying verb and resource. Identifies return type (summary or full text) and language support, distinguishing it from sibling search tools like google_search which return search results.

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

Usage Guidelines3/5

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

Implied usage via sample prompts, but lacks explicit guidance on when to prefer this tool over alternatives or when not to use it. No mention of exclusionary conditions or alternatives.

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

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, with minor overlap between google_lens and google_lens_detect, and between transcribe_video and transcribe_local. The descriptions help resolve ambiguity.

Naming Consistency3/5

Naming is mixed: Google services use a consistent 'google_*' prefix, but other tools use various verb_object patterns (e.g., fetch_emails, list_images) and some just a verb (subscribe, unsubscribe). The conventions are readable but not uniform.

Tool Count3/5

38 tools is high for a single MCP server, pushing the boundary of manageability. However, each tool serves a distinct utility, and the set covers a broad scope. It feels more like a general-purpose toolkit than a focused server.

Completeness3/5

The tool surface covers Google services, media handling, feed management, and web archiving well, but lacks features like sending emails, deleting clips or archives, or managing subscription details. Some domains feel incomplete.

Maintenance

ActivityMaintained
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/engram-ae/noapi-google-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server