robotbase-content
Server Details
Agent MCP: 35 tools — social hot lists, attention trends, 80k+ books, 17 web tools.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- wygogogo19/robotbase-mcp
- GitHub Stars
- 0
- Server Listing
- robotbase-mcp
TDQS
Scored across 35 tools
Two large clusters overlap heavily: seven retrieval tools (cyberlibrary_search, search_passages, semantic_search, fulltext_search, rag_context, verify_quote, search_books) all answer 'find text', and three metadata tools (web_metadata, web_extract, web_extract_schema) all pull OG/JSON-LD from a page. The 'Do not use' clauses help, but an agent must read long descriptions to pick correctly, and several pairs (search vs search_passages vs semantic_search) are near-substitutes rather than distinct capabilities.
Names are uniformly snake_case and cleanly namespaced by domain (cyberlibrary_*, web_*), which makes scanning predictable. Minor deviations exist: web_monitor_set/list/delete use object_verb instead of verb_noun, and cyberlibrary_book_meta, attention_trend and social_hot are noun phrases rather than actions.
35 tools is heavy for a content-retrieval server, and the count is inflated by near-duplicate search and metadata variants rather than genuinely separate capabilities. Consolidating the four passage-search tools into one and merging web_metadata into web_extract would cut roughly a quarter of the surface with no loss.
The web side is unusually complete (search, fetch, batch fetch, map, crawl, async crawl + job polling, diff, monitors, screenshot, extract, feed) and the Cyber Library side covers the full lifecycle from catalog index to book meta, TOC, chapter, chunks, RAG context and citation. Gaps are minor: no combined 'answer with citations' shortcut beyond rag_context, and no way to compare or diff book corpus versions.
Available Tools
35 toolsattention_trendAttention TrendARead-onlyIdempotentInspect
Attention and search-interest signals: Google Trends RSS, Wikipedia pageviews and Google Books Ngram. When to use: is a topic rising, long-term attention, regional trending searches, evidence of public interest. Do not use: for social hot lists (social_hot) or prediction-market odds (prediction_market_odds). Returns: {query, geo, trending[], pageviews, ngram, errors}.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | US | |
| limit | No | ||
| query | No | Optional keyword for Wikipedia/Ngram time series. | |
| include | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered; the description adds the return envelope including an errors[] channel, which usefully warns that partial-source failures are possible. It could still say whether sources are fetched in parallel or degrade independently (e.g. does a failing Ngram abort the call), which would push this to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses — sources, when to use, when not to use, returns — each earning its place, with the highest-value routing information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All four parameters are optional with sane defaults, and the description covers sources, use cases, exclusions, and the return shape; only the per-parameter behavior (limit scope, geo semantics) is thin, which is a modest gap for a read-only aggregator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% — only query is documented — but the return key list ({query, geo, trending[], pageviews, ngram, errors}) implicitly maps to the include enum values, and 'regional' hints at geo. Still, limit, the geo format expectation, and the meaning of include=all vs individual values are left to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the concrete sources it aggregates (Google Trends RSS, Wikipedia pageviews, Google Books Ngram) and the kind of question it answers, which cleanly separates it from web_search or cyberlibrary search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use triggers (topic rising, long-term attention, regional trending, evidence of public interest) and an explicit do-not-use clause naming the two siblings (social_hot, prediction_market_odds) that cover adjacent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_book_metaCyberlibrary Book MetaARead-onlyIdempotentInspect
Metadata for exactly one book: title, author, genre, chapter count, word count, source URL and every access URL (HTML page, Markdown mirror, first chapter). When to use: you have a lang+slug and need to decide whether the book is worth fetching, or you need chapter_count before pulling a specific chapter. Do not use: to read content (call cyberlibrary_get_chapter or cyberlibrary_get_markdown). Returns: one catalog record object.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | Language code, e.g. zh-cn. | |
| slug | Yes | Book slug from the catalog, e.g. 23825. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds beyond that: it fixes the cardinality ('exactly one book'), clarifies the lookup key is lang+slug, and states the return shape ('one catalog record object'), which helps the agent plan a fetch decision. No mention of auth or rate limits, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core identity, then labeled When-to-use / Do-not-use / Returns segments. Every clause carries routing or expectation-setting information; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields and stating the return shape, so the agent knows what it will get. Combined with the routing guidance, nothing needed to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (lang, slug) are documented there, so the schema does the heavy lifting. The description only implies the lang+slug requirement in prose without adding format or validation detail beyond what the schema already says. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: returns metadata for exactly one book, and enumerates the fields (title, author, genre, chapter_count, word_count, source URL, access URLs). It also names the sibling tools it is not (cyberlibrary_get_chapter, cyberlibrary_get_markdown), so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' conditions (you have lang+slug and need to judge whether a book is worth fetching, or need chapter_count before pulling a chapter) and an explicit 'Do not use' clause pointing at the two content-retrieval siblings. Both the trigger and the exclusions are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_catalog_indexCyberlibrary Catalog IndexARead-onlyIdempotentInspect
Every language catalog in Cyber Library with item counts and the corpus generation date. When to use: first call in any session - it tells you which languages exist and how large each is, so you can pick a language before fetching a shard. Do not use: to list actual books (call cyberlibrary_language_shard) or to read a book (call cyberlibrary_get_markdown / cyberlibrary_get_chapter). Returns: {generated_at, total_items, readable_items, languages[]} where each language entry carries {lang, total_items, url|pages}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds value beyond these by spelling out the return shape ({generated_at, total_items, readable_items, languages[]}) and the ordering role of the call, though it says nothing about rate limits or the size/cost of the catalog response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then routes with labeled 'When to use' / 'Do not use' clauses and closes with the return shape. Every sentence carries distinct information; no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by enumerating the top-level return fields and the per-language entry contents. Combined with annotations covering the safety profile, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter syntax for the description to clarify, and it correctly describes the returned fields instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: indexing 'Every language catalog in Cyber Library with item counts and the corpus generation date.' It distinguishes itself from siblings by explicitly naming cyberlibrary_language_shard and cyberlibrary_get_markdown/get_chapter as different tools, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use: first call in any session' with the reason (to pick a language before fetching a shard), plus a 'Do not use' clause naming the correct alternatives for each excluded case. Both when and when-not are covered with named substitutes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_citeCyberlibrary CiteARead-onlyIdempotentInspect
Ready-to-paste citation for one book: title, author, canonical page URL, Markdown URL, license and the public-domain territory notice. When to use: before quoting or summarising a book, so the answer carries a verifiable source. Do not use: to fetch content (use cyberlibrary_get_chapter). Returns: {title, author, page_url, markdown_url, license, source_url, citation, notice}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | ||
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered structurally. The description adds useful context about what is returned (including a public-domain territory notice and license), but discloses nothing new about behavior beyond that – no auth needs, rate limits, or edge cases. A 3 is appropriate against a full annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then clearly subdivided into 'When to use', 'Do not use', and 'Returns'. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only citation helper with no output schema, the description lists the return fields so the agent knows what it gets, and usage boundaries are clear. The only real gap is the undocumented lang/slug parameters, otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the two required parameters (lang, slug) are documented nowhere. The description never explains what these identifiers mean or their expected format, so it fails to compensate for the coverage gap despite being the only source of parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cite) plus resource (one book) and enumerates the exact fields produced (title, author, page_url, license, notice). It also names the sibling it is not (cyberlibrary_get_chapter), so an agent can place it precisely among the ~60 tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives both sides: 'When to use: before quoting or summarising a book, so the answer carries a verifiable source' and 'Do not use: to fetch content (use cyberlibrary_get_chapter)'. The alternative is named with the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_fulltext_searchCyberlibrary Fulltext SearchARead-onlyIdempotentInspect
Full-text search inside the actual book text (a 26 GB corpus of chapter Markdown), returning the matching passage plus the book, chapter and canonical source URL for each hit. When to use: you need to locate where a phrase, name or quotation occurs in the corpus, or to ground an answer in a verifiable passage. Do not use: to find a book by title (call cyberlibrary_search_books, which is far cheaper). Strongly prefer passing lang: English alone is 79% of the corpus (20.4 GB), so a language-scoped search is typically 10-100x faster and more relevant. Returns: {query, lang, searched_languages, skipped_languages, scanned_mb, elapsed_ms, results[{lang, book, chapter, source_url, match, snippet}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language code to search within (strongly recommended), e.g. zh-cn, en, fr. | |
| limit | No | Max passages to return (1-50). Default 10. | |
| query | Yes | Literal phrase to find (2-120 chars, case-insensitive). | |
| snippet_chars | No | Characters of context around each hit (100-2000). Default 400. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly/idempotent/non-destructive, so the safety profile is covered. The description goes further with corpus size (26 GB), the 79%/20.4 GB English-language weighting, and the 10-100x speed/relevance payoff of language scoping — genuinely useful behavior beyond the annotations. It stops short of discussing auth or rate limits, but those are minor here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then the returns shape; every sentence carries operational information. The dense inline returns block is slightly heavy, but with no output schema it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter search tool with no output schema, the description supplies the return structure (query, lang, results with book/chapter/source_url/match/snippet), scoping advice, and the sibling alternative — nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all four parameters (baseline 3). The description adds the rationale the schema lacks — why lang matters (79% of corpus, 10-100x faster) — which meaningfully guides parameter choice beyond the raw field docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (full-text search inside actual book text over a 26 GB Markdown corpus) and explicitly distinguishes itself from the title-lookup sibling cyberlibrary_search_books. An agent can identify the tool and its scope without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('locate where a phrase, name or quotation occurs... or ground an answer in a verifiable passage') and when-not ('to find a book by title — call cyberlibrary_search_books, which is far cheaper'), plus a strong optimization ('pass lang'). Full routing guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_get_chapterCyberlibrary Get ChapterARead-onlyIdempotentInspect
Clean Markdown of a single chapter - the recommended way to put Cyber Library text into an agent context. Chapter 0/1 are both accepted for the opening chapter. When to use: after cyberlibrary_get_toc, to read the specific chapter you care about without pulling the whole book. Do not use: to read an entire book in one shot (use cyberlibrary_get_markdown, but mind the size). Returns: {chapter, title, chars_total, chars_returned, truncated, markdown, markdown_url}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | ||
| slug | Yes | ||
| chapter | Yes | Chapter number from cyberlibrary_get_toc. | |
| max_chars | No | Truncate Markdown to this many characters (1000-100000). Default 20000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description still adds value by disclosing the chapter 0/1 equivalence, the truncation behavior, and the exact return fields including truncated and markdown_url. It stops short of describing pagination or rate-limit behavior, keeping it a solid 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then cleanly segmented into when-to-use, do-not-use, and returns. Every clause earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the return fields and covers the key edge case and the primary alternative. It is nearly complete, with the only gap being undocumented lang/slug parameter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; chapter and max_chars are documented, but lang and slug are not. The description adds real meaning for chapter ('0/1 are both accepted for the opening chapter') and implies truncation semantics for max_chars, but says nothing about lang or slug, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Clean Markdown of a single chapter') and positions itself ('the recommended way to put Cyber Library text into an agent context'). It names the sibling it complements (cyberlibrary_get_toc) and the one it is not (cyberlibrary_get_markdown), so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use: after cyberlibrary_get_toc, to read the specific chapter you care about' and 'Do not use: to read an entire book in one shot (use cyberlibrary_get_markdown, but mind the size)'. This names the alternative and the condition that selects it plainly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_get_chunksCyberlibrary Get ChunksARead-onlyIdempotentInspect
Stable paragraph-level chunks for one book, each with a permanent chunk_id (lang:slug:chapter:para), citation text and canonical URL. When to use: you need RAG-ready passages with deterministic IDs instead of whole chapters, or you want to cache/index exact passages. Do not use: to read a whole chapter (cyberlibrary_get_chapter) or to search across books (cyberlibrary_verify_quote / cyberlibrary_fulltext_search). Returns: {lang, slug, title, license, corpus_version, total_chunks, chunks[{chunk_id, chapter, para, text, citation, url}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | Language code, e.g. zh-cn, en. | |
| slug | Yes | Book slug from the catalog. | |
| limit | No | Chunks to return (1-100). Default 50. | |
| start | No | 1-based chunk offset. Default 1. | |
| chapter | No | Optional chapter number; omit for the whole book. | |
| max_chars | No | Per-chunk character cap (200-8000). Default 2000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive, openWorld), so the description's added value is the deterministic chunk_id format (lang:slug:chapter:para) and chunk stability, which matter for caching/indexing. It does not discuss rate limits or pagination semantics beyond the schema fields, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose, then labeled When/Do-not/Returns blocks. Dense but every clause carries routing or payload information; nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description enumerates the return object (lang, slug, title, license, corpus_version, total_chunks, chunk fields), so an agent knows both how to call it and what comes back. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, start, chapter and max_chars are fully documented in the schema itself. The description adds no parameter-level detail beyond the return payload shape, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource phrase ('Stable paragraph-level chunks for one book') and immediately qualifies it against sibling tools (whole chapters vs. cross-book search). An agent can distinguish it from cyberlibrary_get_chapter and cyberlibrary_fulltext_search without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'Do not use' sections, each naming the alternative tool that covers the excluded case (cyberlibrary_get_chapter, cyberlibrary_verify_quote/cyberlibrary_fulltext_search). Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_get_markdownCyberlibrary Get MarkdownARead-onlyIdempotentInspect
Whole-book Markdown mirror, including the book's own metadata header and summary. When to use: you need the complete text and have checked chapter_count/word_count via cyberlibrary_book_meta, or you specifically want the book-level summary block. Do not use: for long books where you only need part of the text - prefer cyberlibrary_get_toc + cyberlibrary_get_chapter, which is far cheaper. Returns: {chars_total, chars_returned, truncated, markdown, markdown_url}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | ||
| slug | Yes | ||
| max_chars | No | Truncate to this many characters (1000-200000). Default 40000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's job is to add context. It does: the return shape {chars_total, chars_returned, truncated, markdown, markdown_url} and the truncation behavior. It omits auth/rate-limit notes, but discloses meaningful behavioral detail beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then clearly delineated 'When to use', 'Do not use', and 'Returns' sections. Every sentence is functional with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description provides the return shape and truncation semantics. Combined with explicit routing guidance and alternatives, an agent has everything needed to call this correctly versus siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% - max_chars is documented in the schema while lang and slug are not. The description adds no meaning for lang/slug and only indirectly references truncation via the return fields, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('whole-book Markdown mirror') with scope (entire book, including metadata header and summary). It distinguishes itself from siblings by naming chapter/toc alternatives and the book-level summary it uniquely provides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' clause (complete text needed, after checking chapter_count/word_count via cyberlibrary_book_meta) and explicit 'Do not use' with the alternative (cyberlibrary_get_toc + cyberlibrary_get_chapter, 'far cheaper'). Both the positive and negative conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_get_tocCyberlibrary Get TocARead-onlyIdempotentInspect
Table of contents for one book: ordered chapters with their real titles. When to use: right after cyberlibrary_book_meta, to pick which chapter to read; this is the cheapest way to survey a long book (single HTML read regardless of chapter count). Do not use: to read prose (call cyberlibrary_get_chapter). Returns: {lang, slug, total_chapters, page, total_pages, chapters[{chapter, title, url}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | ||
| page | No | 1-based page of the chapter list. Default 1. | |
| slug | Yes | ||
| per_page | No | Chapters per page (1-500). Default 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/destructive=false, so the safety profile is covered. The description adds genuinely non-annotated context: cost behavior ('single HTML read regardless of chapter count') and a full return shape. It does not mention rate limits or the single-book scope constraint beyond 'one book', so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core definition, then clearly labels When to use / Do not use / Returns. No filler sentences; every clause adds routing or cost information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description supplies the return structure in full, and annotations cover the safety profile. The only shortfall is the unexplained required lang/slug parameters, which are likely self-evident but not guaranteed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: page/per_page are documented in the schema, but lang and slug carry no schema description. The description names lang/slug only as return fields, not as callable parameters, so it does not compensate for the coverage gap on those two required inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Table of contents for one book: ordered chapters with their real titles') and immediately distinguishes itself from the prose-reading sibling. An agent can tell it apart from cyberlibrary_get_chapter and book_meta without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when: 'right after cyberlibrary_book_meta, to pick which chapter to read', plus a rationale (cheapest way to survey a long book). Explicit when-not: 'to read prose (call cyberlibrary_get_chapter)'. Both the trigger and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_language_shardCyberlibrary Language ShardARead-onlyIdempotentInspect
One page of the book catalog for a language. Large languages are paginated (for example en = 25 pages x 2500 books); small languages are a single shard. When to use: browse or sample what a language holds, or locate a book title. Do not use: to search by keyword across the whole corpus (that is the planned cyberlibrary_fulltext_search) or to get one book's metadata when you already know its slug (call cyberlibrary_book_meta). Returns: {lang, page, total_pages, total_items, count, books[]} with books trimmed to limit.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | Language code, e.g. en, zh-cn, zh-tw, de. | |
| page | No | 1-based page for paginated languages. Default 1. | |
| limit | No | Max books to return (1-2500). Default 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/destructive-false, so the safety profile is covered. The description adds real behavioral context beyond that: the pagination model, a concrete scale example (en = 25 pages x 2500 books), and the return shape with books trimmed to `limit`. It stops short of stating ordering of results or what happens when `page` exceeds total_pages, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then when-to-use, then exclusions, then return shape. Each sentence carries distinct information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-shape burden and does so explicitly with field names. Combined with annotations covering safety and the schema covering all three params, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: the scale example ties `page` and the default 100 `limit` to real pagination behavior, and 'books trimmed to `limit`' clarifies the interaction between limit and the returned count. It still doesn't document zero-based vs 1-based beyond the schema or overflow behavior for `limit`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One page of the book catalog for a language') and immediately clarifies the pagination model (large languages paginated, small ones a single shard). It is readily distinguishable from siblings by naming cyberlibrary_fulltext_search and cyberlibrary_book_meta as the not-this alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives both a 'When to use' (browse/sample a language, locate a title) and a 'Do not use' with two named alternatives and their selecting conditions. Nothing about routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_rag_contextCyberlibrary Rag ContextARead-onlyIdempotentInspect
Retrieve ranked passages for a question and pack them into a token budget, ready to paste into an agent context. Each passage carries a permanent chunk_id, book/chapter/paragraph, citation, license and source URL, plus a packed context string and citations index. When to use: you are building a RAG answer and need grounded evidence with citations, without assembling chunks yourself. Do not use: to verify an exact quotation (cyberlibrary_verify_quote) or to read a whole book (cyberlibrary_get_chunks). Returns: {query, lang, budget_tokens, used_tokens, passages_returned, corpus_version, context, passages[], citations[]}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional language filter, e.g. zh-cn, en. | |
| limit | No | Max passages (1-30). Default 12. | |
| query | Yes | Question or keywords (2-300 chars). | |
| budget_tokens | No | Approximate context budget (300-12000). Default 2000. | |
| snippet_chars | No | Per-passage character cap (200-2000). Default 900. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description still adds real behavioral content: what each passage carries (permanent chunk_id, book/chapter/paragraph, citation, license, source URL) and that a packed context string plus citations index are produced. It omits rate limits and any auth requirements, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by structured 'When to use', 'Do not use' and 'Returns' segments. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description provides a Returns object shape, the usage boundaries, and per-passage payload detail. Combined with full schema coverage and safety annotations, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters (baseline 3). The description adds meaning by framing the call around a token budget and packing behavior, contextualizing how budget_tokens/limit/snippet_chars interact, and enumerates the returned fields. Slight value-add over the schema, but no syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve ranked passages') plus the distinguishing behavior of packing them into a token budget. It explicitly names the sibling tools it is not (cyberlibrary_verify_quote, cyberlibrary_get_chunks), so an agent can separate it from the crowded cyberlibrary family without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains an explicit 'When to use' (building a RAG answer needing grounded citations without assembling chunks) and 'Do not use' with named alternatives and their selecting conditions. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_searchCyberlibrary SearchARead-onlyIdempotentInspect
Unified CyberLibrary search: one query, automatic language, BM25 + neural semantic fusion (RRF), returning the most relevant passages with stable chunk IDs, citations, licenses and source URLs, plus an answerable/confidence signal. When to use: first choice when you do not want to decide between keyword and semantic search. Modes: auto (default, both), keyword (exact terms/names), semantic (paraphrase/theme). Options: lang, limit, snippet_chars. Returns: {query, lang, mode_requested, mode_used, answerable, confidence, corpus_version, results[{chunk_id, score, sources, title, author, chapter, para, citation, url, license, snippet}], next_actions}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional language filter, e.g. zh-cn, en. | |
| mode | No | Default auto. | |
| limit | No | Max passages (1-30). Default 10. | |
| query | Yes | Question, phrase or theme (2-300 chars). | |
| snippet_chars | No | Snippet length (100-1000). Default 400. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the description's added value is the return contract: answerable/confidence signal, corpus_version, stable chunk IDs, license and source URL fields, and next_actions. That is meaningful context beyond the annotations, though it omits rate limits, corpus scope, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then when-to-use, modes, options, and return shape in a clear progression with no fluff. It is dense and the verbose return-field enumeration is justified by the absence of an output schema, though 'auto (default, both)' mildly repeats the schema default.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one required parameter, the description correctly compensates by spelling out the response shape and the confidence/answerable signal. It covers modes, options, and routing, leaving only edge cases like empty results, pagination behavior, or failure modes unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning to the mode enum (schema only says 'Default auto', while the description explains what keyword and semantic actually do). Lang, limit and snippet_chars get no added depth beyond the schema, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Unified CyberLibrary search') and goes further to describe the mechanism (BM25 + neural semantic fusion via RRF) and the output (passages with chunk IDs, citations, confidence). It does not explicitly name the sibling alternatives it overlaps with (cyberlibrary_semantic_search, cyberlibrary_fulltext_search, cyberlibrary_search_passages), so differentiation from those is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use: first choice when you do not want to decide between keyword and semantic search' gives a clear selection rule, and the mode descriptions (keyword for exact terms/names, semantic for paraphrase/theme) extend that into in-tool routing. No when-NOT-to-use or named sibling fallbacks, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_search_booksCyberlibrary Search BooksARead-onlyIdempotentInspect
Search the catalog by title or author within one language, returning matching book records (title, author, lang, slug, chapter_count, word_count and URLs). When to use: you have a title or author and need the lang+slug that every other tool requires. Do not use: to find words inside the text of books - that is cyberlibrary_fulltext_search. Returns: {query, lang, searched_languages, matches_returned, books[']}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | Language code to search in (required), e.g. en, zh-cn. | |
| limit | No | Max books to return (1-100). Default 20. | |
| query | Yes | Substring matched against title and author (case-insensitive). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so safety is covered. The description adds value beyond that by disclosing the return payload shape and the downstream contract that lang+slug are prerequisites for other tools. It stops short of describing matching semantics (exact vs fuzzy, ordering, what happens when a language has no matches), so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then when-to-use, exclusion, and return shape — a sensible ordering with almost no filler. Minor deduction for the trailing return spec, which is malformed/truncated ('books[']') and uses nested braces that are harder to parse than a plain list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the returned fields and envelope keys. Combined with the routing guidance and annotation coverage of the safety profile, an agent can call this correctly; only the garbled return-key syntax and unstated pagination/limit behavior keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, lang and limit are already documented in the schema, giving a baseline of 3. The description reinforces that lang scopes the search to a single language and that its output feeds other tools, but adds no new format, default or edge-case detail for the parameters themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('search the catalog by title or author') plus the scoping constraint ('within one language') and enumerates the returned record fields. It is clearly distinguishable from cyberlibrary_fulltext_search and the semantic/passage search siblings because the match target (title/author) is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains an explicit 'When to use' clause tied to a concrete agent need ('you have a title or author and need the lang+slug that every other tool requires') and an explicit 'Do not use' exclusion naming the correct alternative. This is exactly the routing information an agent needs to choose between overlapping search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_search_passagesCyberlibrary Search PassagesARead-onlyIdempotentInspect
Ranked passage retrieval over the paragraph index (BM25). Use a natural-language or keyword query to find the most relevant passages across books, with the book, chapter, chunk_id, citation, license and source URL for each hit. When to use: you need evidence passages for a question rather than a literal phrase match. Do not use: to verify an exact quotation (cyberlibrary_verify_quote) or to read a whole book (cyberlibrary_get_chunks). Pass lang when known (faster/more precise). Returns: {query, matched, candidates, corpus_version, results[{chunk_id, score, lang, slug, title, chapter, para, citation, url, license, snippet}]}. Note: BM25 lexical ranking; a neural semantic layer is planned.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional language filter, e.g. zh-cn, en. | |
| slug | No | Optional book slug to restrict the search. | |
| limit | No | Max passages (1-20). Default 10. | |
| query | Yes | Natural-language or keyword query (2-120 chars). | |
| snippet_chars | No | Snippet length (100-1000). Default 300. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent and non-destructive behavior, so the safety profile is covered. The description goes further by disclosing the ranking model (BM25 lexical), the performance tradeoff of passing lang, and the planned neural layer, which is genuinely useful context. It does not discuss result limits or failure modes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then when/not-to-use, then parameters, then return shape. The embedded return-schema listing is verbose, but since there is no output schema it earns much of its space; still, it is the longest portion of an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully specifies the return object and its result fields, and the absence of structured output is compensated for. Combined with the usage routing and ranking note, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by advising 'Pass lang when known (faster/more precise)' and framing query as natural-language or keyword. It does not clarify slug/snippet_chars beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ranked passage retrieval over the paragraph index (BM25)') and immediately scopes the input mode ('natural-language or keyword query'). It clearly distinguishes itself from the many library siblings by naming the retrieval mechanism and the paragraph-index target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'Do not use' clauses, with named alternatives: cyberlibrary_verify_quote for exact quotations and cyberlibrary_get_chunks for whole-book reading. This routes the agent correctly among close siblings with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_semantic_searchCyberlibrary Semantic SearchARead-onlyIdempotentInspect
Semantic passage search over a neural embedding index: describe what you are looking for in natural language and get the closest passages, each with a permanent chunk_id, book/chapter/paragraph, citation, license and source URL. When to use: keyword/BM25 search misses paraphrases or themes ("a story about a soldier returning from war", "清代公案小说里的侠客"). Do not use: to verify an exact quotation (cyberlibrary_verify_quote) or to read a whole book (cyberlibrary_get_chunks). Falls back to BM25 if the embedding service is down. Returns: {query, lang, backend, total_vectors, corpus_version, results[{chunk_id, score, title, author, chapter, para, citation, url, license, snippet}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional language filter, e.g. zh-cn, en. | |
| limit | No | Max passages (1-30). Default 10. | |
| query | Yes | Natural-language description (2-300 chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, but the description adds valuable context beyond those annotations: it discloses the BM25 fallback when the embedding service is down and fully describes the return payload. This is a rich behavioral disclosure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then clearly labeled sections for when to use, when not to use, fallback behavior, and return shape. Despite including a full return schema inline, every sentence earns its place and the structure is highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description supplies the full return object shape. Annotations cover the safety profile, the input schema covers parameters, and the description covers routing and fallback behavior. Nothing material is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents query, lang, and limit. The description adds meaning beyond the schema by explaining that the query should be a natural-language paraphrase or theme, with concrete examples, though it does not elaborate on the lang or limit parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Semantic passage search over a neural embedding index') and explicitly distinguishes the tool from keyword/BM25 search. It also names sibling alternatives (cyberlibrary_verify_quote, cyberlibrary_get_chunks), so an agent can route correctly without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' criteria with illustrative paraphrase/theme examples and an explicit 'Do not use' list naming the better sibling for exact quotations and whole-book reads. The alternatives are named with their conditions, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_service_infoCyberlibrary Service InfoARead-onlyIdempotentInspect
Discovery endpoints for Cyber Library: MCP endpoint, tools list, Server Card, usage stats, catalog API, llms.txt / llms-full manifest, OpenAPI and the HTML search UI. When to use: you need a machine-readable entry point or want to know what else this service exposes. Do not use: for book data itself. Returns: a flat map of named endpoint URLs plus version and citation guidance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description still adds value by disclosing the return shape ('a flat map of named endpoint URLs plus version and citation guidance'), which no annotation or output schema supplies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then cleanly segmented into When to use / Do not use / Returns. The endpoint enumeration is long but each item is a distinct capability an agent may want to discover; slight verbosity keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations carrying the safety profile, the description covers the essentials: what it returns, when to call it, and when not to. Key names inside the returned map are not specified, but that is a minor gap for a discovery tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No schema-level parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Discovery endpoints for Cyber Library') and enumerates exactly what it exposes (MCP endpoint, tools list, Server Card, catalog API, OpenAPI, search UI). It is immediately distinguishable from the sibling book-data tools like cyberlibrary_get_chapter or cyberlibrary_search_books.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides both directions: 'When to use: you need a machine-readable entry point or want to know what else this service exposes' and 'Do not use: for book data itself.' The negative guidance routes the agent away from the entire cyberlibrary_* book family without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cyberlibrary_verify_quoteCyberlibrary Verify QuoteARead-onlyIdempotentInspect
Verify whether a quotation actually occurs in the Cyber Library corpus and return the exact passage, book, chapter, permanent chunk_id and citation. When to use: before citing a quotation, to catch model hallucination, or to ground a claim in a verifiable source. Do not use: to find a book by title (cyberlibrary_search_books) or to read a chapter (cyberlibrary_get_chapter). Matching is exact substring first, then fuzzy (>=90% of the quote). Returns: {quote, verified, match_type, best_score, matches[{chunk_id, score, title, chapter, para, citation, url, license}], corpus_version}.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional language filter, e.g. zh-cn, en. | |
| slug | No | Optional book slug to restrict the search. | |
| limit | No | Max matches (1-20). Default 5. | |
| quote | Yes | Quotation to verify (4-500 chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds valuable behavioral detail beyond that: exact substring matching first, then fuzzy matching at a >=90% threshold, plus the returned corpus_version. It omits potential caveats such as rate limits, corpus scope, or what a no-match result implies, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded: purpose, when to use, when not to use, matching strategy, and return shape follow in logical order. Every sentence adds decision-relevant information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description explicitly lists the return object fields, including verified, match_type, best_score, match details, and corpus_version. Combined with clear usage boundaries and matching behavior, it gives an agent everything needed to invoke and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so lang, slug, limit, and quote are already documented in the input schema. The description adds no further parameter-level semantics such as how lang interacts with matching or what slug values look like. Baseline 3 is appropriate when the schema carries parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: verify a quotation against the Cyber Library corpus and return the passage, book, chapter, chunk_id, and citation. It also distinguishes itself from sibling tools by naming cyberlibrary_search_books and cyberlibrary_get_chapter as outside its scope. An agent can identify the tool's function without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it (before citing, to catch hallucination, to ground a claim) and when not to use it (finding a book by title, reading a chapter), naming the alternatives. The conditions for choosing this tool are directly actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_actWeb ActARead-onlyIdempotentInspect
Drive a real Chromium browser on one public page: click, type, press keys, scroll, wait for selectors, then return the resulting text (and optionally a screenshot and JSON XHR responses). When to use: the page needs interaction before its content appears (cookie banners, tabs, 'load more', form submit) and web_fetch/web_crawl cannot see it. Do not use: for plain reading (web_fetch) or bulk crawling (web_crawl); no login/paywall bypass. Returns: {ok, url, final_url, title, markdown, chars, elapsed_ms, screenshot?, xhr?, took_ms, _metering}. Max 10 actions; screenshot returns MCP image content. Metered: shares the web free bucket (100 calls/day per IP shared by all web tools), then 3 credits per call over x402.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The http(s) page URL. | |
| actions | Yes | Actions: {type: click|type|press|scroll|wait_for|wait_ms, ...} | |
| full_page | No | Full-page screenshot. Default false. | |
| max_chars | No | Text cap 1000-20000. Default 20000. | |
| screenshot | No | Return a JPEG screenshot. Default false. | |
| include_xhr | No | Return JSON XHR responses captured while acting. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: the full return object shape, the 10-action cap, that screenshot returns MCP image content, and the metering model (shared 100/day free bucket, then 3 credits/call over x402). There is mild tension with readOnlyHint=true given form-submit/typing capability, but the framing is interaction-with-a-public-page rather than a state-changing API call, so it is not a direct contradiction. A note on what happens when an action fails mid-sequence would complete it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then uses labeled 'When to use', 'Do not use', 'Returns', and metering clauses. Dense but every sentence carries operational information; nothing is redundant with the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Strong for a complex tool with no output schema: it spells out the return fields (ok, url, final_url, title, markdown, chars, elapsed_ms, screenshot?, xhr?, took_ms, _metering), the action limit, and cost. The remaining gap is how per-action error/failure is surfaced within {ok, ...} and what happens if one of the 10 actions fails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters and their defaults are already documented. The description only restates the 10-action maximum (already in maxItems) and adds that screenshot yields MCP image content; it adds no per-action syntax detail (e.g. selector vs text target for click/type) beyond what the schema hints at.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('drive a real Chromium browser') plus resource ('one public page') and enumerates the interaction primitives: click, type, press keys, scroll, wait for selectors. It explicitly contrasts itself against web_fetch and web_crawl, so the agent can distinguish it from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' (content hidden behind cookie banners, tabs, 'load more', form submit that web_fetch/web_crawl cannot see) and explicit 'Do not use' (plain reading -> web_fetch, bulk crawling -> web_crawl, no login/paywall bypass). This is the when/when-not/alternatives trifecta.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_crawlWeb CrawlARead-onlyIdempotentInspect
Crawl one site's same-host pages starting from a URL (depth 1-2, at most 20 pages) and return each page's title, URL and readable text. When to use: you need several pages from one site (docs section, news index, product list) and web_map alone is not enough. Do not use: to mirror a whole site (hard cap 20 pages, same host), or for one page (web_fetch). Returns: {ok, url, final_url, count, pages:[{url, title, status, chars, content}], cached, took_ms, _metering}. Respects robots.txt and SSRF guards; partial page failures are skipped. Metered: shares the web free bucket (100 calls/day per IP shared by all web tools), then 3 credits per call over x402 - no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Start URL (same host is crawled). | |
| depth | No | Link depth 1-2. Default 2. | |
| max_chars | No | Per-page content cap 200-4000. Default 1000. | |
| max_pages | No | Max pages 1-20. Default 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, but the description adds material context beyond them: robots.txt compliance, SSRF guards, partial-failure skipping, same-host enforcement, and exact metering terms (shared 100/day free bucket, 3 credits over x402, no API key). This is precisely the behavioral disclosure an agent needs before spending quota.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then labeled When/Do-not/Returns/Behavior/Metering segments. Despite being information-dense, every sentence carries a distinct operational fact with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description spells out the exact return object shape ({ok, url, final_url, count, pages[...], cached, took_ms, _metering}) and notes partial failures are skipped. Combined with metering and safety notes, an agent has everything needed to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so url, depth, max_chars, and max_pages are already documented. The description reinforces the depth range and page cap but adds no new per-parameter semantics (no guidance on when to choose depth 1 vs 2 or how max_chars affects cost), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crawl one site's same-host pages starting from a URL') with scope bounds (depth 1-2, ≤20 pages) and names what it returns. It is immediately distinguishable from web_fetch (single page) and web_map (URL listing) by explicit sibling naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When to use' condition (several pages from one site: docs section, news index, product list, and web_map is insufficient) and an explicit 'Do not use' clause routing single pages to web_fetch and full mirrors away. Alternatives and exclusions are both stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_crawl_asyncWeb Crawl AsyncARead-onlyIdempotentInspect
Submit a same-host crawl as an asynchronous job and return a job_id immediately. When to use: you need more than a couple of pages and cannot hold a long HTTP request; submit here, then poll web_crawl_job until status is done, failed or cancelled. Do not use: for one page (web_fetch) or when you need the result in this call (web_crawl). Returns: {ok, job_id, status, url, depth, max_pages, max_chars, idempotent, poll_with}. Pass idempotency_key to retry safely (24h window returns the same job). Metered: shares the web free bucket (100 calls/day per IP), then 3 credits per submit over x402.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Start URL (same host is crawled). | |
| depth | No | Link depth 1-2. Default 2. | |
| max_chars | No | Per-page content cap 200-4000. Default 1000. | |
| max_pages | No | Max pages 1-20. Default 20. | |
| idempotency_key | No | Optional; retries within 24h return the same job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description still adds substantial context beyond them: the metering model (100 calls/day free bucket per IP, then 3 credits per submit over x402), the 24h idempotency-key retry window, and the exact return shape. This is exactly the kind of operational context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well-structured, with a clear purpose sentence followed by labeled when-to-use, when-not-to-use, returns, and metering sections. No sentence is filler; even the metering note is decision-relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 5 params at full schema coverage, no output schema, and rich annotations, the description is fully sufficient: it tells the agent what happens, how to poll, how to retry idempotently, and what it costs. Nothing needed to invoke correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so ranges and defaults for depth, max_chars, and max_pages are already documented in the schema. The description's note on idempotency_key ('retry safely, 24h window returns same job') largely repeats the schema text, adding little new semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Submit a same-host crawl as an asynchronous job') plus the immediate return of job_id. It clearly distinguishes itself from web_crawl (synchronous), web_fetch (single page), and web_crawl_job (polling) by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives when-to-use (more than a couple of pages, can't hold a long request, then poll web_crawl_job until done/failed/cancelled) and when-not-to-use (one page → web_fetch; need result in this call → web_crawl). The alternatives are named with the condition that selects each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_crawl_jobWeb Crawl JobARead-onlyIdempotentInspect
Check or cancel an asynchronous crawl job created by web_crawl_async. When to use: after web_crawl_async, poll with action=status until status is done/failed/cancelled; use action=cancel to stop a running job. Do not use: to start a crawl (web_crawl_async) or for a quick one-page read (web_fetch). Returns status: {ok, job_id, status: queued|running|done|failed|cancelled, progress:{pages_done,max_pages}, created_at, updated_at, result?, error?}. Free (not metered); rate-limited. Done result uses the same shape as web_crawl.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Poll status (default) or cancel the job. | |
| job_id | Yes | job_id returned by web_crawl_async. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: free/not metered, rate-limited, the full status object shape, and that a done result matches web_crawl's shape. One residual tension is left unaddressed: readOnlyHint=true while action=cancel stops a running job, so the description should clarify that cancel only terminates the job and does not alter fetched data or crawl results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, when-to-use, when-not-to-use, and return shape are ordered by decision value, with no filler sentences. The inline return-shape list is dense but earns its space given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter control tool with no output schema, the description covers the lifecycle, terminal states, progress fields, error field, cost, and rate limiting — everything needed to call it and interpret the response correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum already documents 'Poll status (default) or cancel the job', so the description largely restates it via 'poll with action=status' and 'action=cancel to stop a running job'. It adds the polling-until-terminal-state habit, but no format or edge-case detail about job_id beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb pair and resource ('Check or cancel an asynchronous crawl job') and ties it back to the creating tool, web_crawl_async. An agent can distinguish it from web_crawl_async, web_fetch, and web_monitor_* without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' names the polling pattern and termination states, and explicit 'Do not use' names the two alternatives (web_crawl_async to start, web_fetch for quick single-page reads) with the condition that selects each. The action=status vs action=cancel split is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_diffWeb DiffARead-onlyIdempotentInspect
Fetch a page now and compare it with the previous snapshot of the same URL, returning whether it changed and a unified diff (no LLM). When to use: monitoring a page for updates - prices, docs, policy pages, SEO titles/meta; first call stores the baseline, later calls return added/removed lines. Do not use: for one-off reading (web_fetch) or structured fields (web_extract_schema). Returns: {ok, url, baseline, changed, diff, added_lines, removed_lines, previous_ts, current_ts, title, hash, chars, fetched_cached, took_ms, _metering}. fresh=true (default) adds a cache-busting query to bypass the 6h page cache; pass fresh=false to compare cached content. Snapshots are kept per URL in SQLite (latest only). Metered: shares the web free bucket (100 calls/day per IP), then 1 credit per call over x402.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The http(s) page URL. | |
| fresh | No | Bypass the page cache with a cache-busting query. Default true. | |
| max_chars | No | Compare at most this many chars (500-12000). Default 4000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the 6h page cache and what fresh=true does to it, that snapshots are persisted per URL in SQLite with only the latest kept, and the metering model (shared 100 calls/day free bucket per IP, then 1 credit via x402). The baseline-persistence side effect is disclosed even though it is arguably a write to internal state; readOnlyHint refers to the external target page, so this is a disclosed nuance rather than a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then clearly delimited 'When to use', 'Do not use', and 'Returns' blocks, followed by cache and metering notes. The long return-field list is justified because no output schema exists, and no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateful, metered, cache-coupled tool with no output schema, the description covers the state model, the return shape field-by-field, cache interaction, and pricing. Nothing an agent needs in order to call it correctly and interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds real semantics on top by explaining the behavioral consequence of fresh (cache-busting query vs. comparing cached content) and by tying the tool's core semantics to max_chars-style truncation. It does not add specifics for max_chars itself, keeping it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+mechanism: fetch a page now and compare against the previous snapshot of the same URL, returning changed flag and unified diff. It explicitly distinguishes itself from web_fetch and web_extract_schema by name, so an agent can route without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When to use' (monitoring prices, docs, policy pages, SEO titles/meta) and an explicit 'Do not use' section naming the two alternative tools and the conditions that select them. It also states the statefulness rule: first call stores the baseline, later calls return added/removed lines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_extractWeb ExtractARead-onlyIdempotentInspect
Extract structured data from one public page: tables (headers + rows), JSON-LD blocks, and Open Graph/Twitter/canonical/language metadata. When to use: the page has tables or schema.org JSON-LD you need as data, without an LLM. Do not use: when you only need the page text (web_fetch) or a screenshot (web_screenshot). Returns: {ok, url, final_url, title, meta:{description,image,site_name,type,canonical,lang}, jsonld[], tables:[{caption,headers,rows}], links? , cached, took_ms, _metering}. Metered: shares the web free bucket (100 calls/day per IP shared by all web tools), then 1 credit per call over x402.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The http(s) page URL. | |
| include_links | No | Also return same-host links (max 100). Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/openWorld), the description discloses metering and cost (shared 100 calls/day per IP free bucket, then 1 credit per call over x402) and the caching signal in the response. That is genuinely actionable context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then use/avoid, then returns, then metering — a sensible ordering. The dense return-shape string is somewhat heavy for a description, though it earns its place given no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description enumerates the response shape (ok, url, title, meta subfields, jsonld, tables with caption/headers/rows, links, cached, took_ms) and covers cost. An agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so url and include_links are already documented. The description adds nothing about parameter semantics; the only hint ('links?') merely mirrors the include_links option in the return shape. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('Extract structured data from one public page') followed by an enumeration of exactly what is extracted (tables, JSON-LD, OG/Twitter/canonical/lang metadata). It is clearly distinguishable from web_fetch, web_metadata, and web_extract_schema by the stated payloads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' (page has tables or schema.org JSON-LD needed as data, without an LLM) and explicit 'Do not use' routing to web_fetch for text and web_screenshot for images. Alternatives are named with the selecting condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_extract_schemaWeb Extract SchemaARead-onlyIdempotentInspect
Extract a page's structured data into a named schema's common fields (no LLM): article, product, event, faq, recipe, course, organization, local_business, breadcrumb, dataset or job_posting. When to use: you need fields (title/author/date, price/currency/availability, event dates, FAQ Q&A, recipe ingredients, org address) rather than raw markdown or tables. Do not use: to get every JSON-LD block verbatim (web_metadata/web_extract) or to read text (web_fetch). Returns: {ok, url, final_url, schema, requested_schema, detected_types, matched, fields:{...}, sources:[jsonld|meta], jsonld_count, tables_count, took_ms, cached, _metering}. If no matching JSON-LD exists it falls back to Open Graph/meta fields and matched=false. Metered: shares the web free bucket (100 calls/day per IP), then 1 credit per call over x402.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The http(s) page URL. | |
| schema | No | Target schema; auto detects from JSON-LD types. Default auto. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/idempotent/open-world, but the description adds materially new context: no-LLM extraction, the Open Graph/meta fallback with matched=false, and the metering model (100/day free bucket then 1 credit via x402). It also documents the return payload shape, which no output schema supplies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then when/when-not, then returns and pricing in clearly segmented clauses. The returns object listing is dense but each field is informative; nothing is wasted, though the brace dump is borderline verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description proactively supplies the exact response shape, the fallback condition, and cost model for a metered open-world call. An agent has everything needed to invoke correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning by listing which fields each schema type yields and noting 'auto' detection from JSON-LD types. It slightly exceeds what the enum table conveys without duplicating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('extract a page's structured data into a named schema') and enumerates the supported schema types, so an agent knows exactly what this returns. It also names the sibling tools it is not (web_metadata, web_extract, web_fetch), making differentiation immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When to use' with concrete field examples (title/author/date, price/availability, FAQ Q&A) and an explicit 'Do not use' clause naming the alternatives for verbatim JSON-LD and raw text. Routing is fully determined without opening any schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_feedWeb FeedARead-onlyIdempotentInspect
Read an RSS or Atom feed and return its latest items. When to use: the user wants the latest posts/news from a site that publishes a feed, or you found a feed URL and want headlines plus links. Do not use: to read article text (use web_fetch) or to discover a site's URLs (use web_map). Returns: {ok, url, final_url, title, count, items:[{title, link, published, summary}], cached, took_ms, _metering}. Summary is HTML-stripped and capped at 500 characters. Metered: shares the web free bucket (100 calls/day per IP shared by all web tools), then 1 credit per call over x402 - there is no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | RSS/Atom feed URL (max 2048 chars). | |
| limit | No | Max items to return, 1-20. Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), and the description adds context they cannot: the full return shape, that summaries are HTML-stripped and capped at 500 chars, caching behavior via the `cached` field, and metering specifics (shared 100 calls/day per IP free bucket, 1 credit per call over x402, no API key). That is real operational context for a rate-limited external call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then return shape, then metering - the order matches how an agent needs to consume it. Every sentence carries distinct information; even the metering line prevents a failed call loop.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description enumerates the return object's fields, documents the summary truncation, and discloses cost limits - which is everything an agent needs to call this correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (url with 2048-char cap, limit 1-20 default 10) are fully documented in the schema. The description adds nothing parameter-specific, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Read an RSS or Atom feed and return its latest items') and explicitly names the sibling tools web_fetch and web_map as the wrong choice for adjacent tasks. An agent can distinguish it from every other web_* tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'When to use' condition (user wants latest posts/news, or a feed URL is known and headlines+links are wanted) and an explicit 'Do not use' with the two correct alternatives for article text and URL discovery. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_fetchWeb FetchARead-onlyIdempotentInspect
Fetch one public web page and return its readable text as clean markdown or plain text, with navigation, scripts, headers and footers stripped. When to use: you have a specific URL (from web_search or the user) and need what the page actually says - 'read this article', 'summarise this docs page', 'turn this URL into markdown'. Do not use: to crawl or mirror a site, to fetch a page behind a login or paywall, to read API/RPC endpoints, or for book text inside CyberLibrary (use cyberlibrary_get_chapter). Returns: {url, final_url, status, title, content, chars, truncated, fetched_at, source (direct|provider), cached, took_ms, _metering}. The response is capped at 12000 characters per call; raise max_chars (up to 20000) when you need more. Reads one public URL only, respects robots.txt, and does not bypass login or paywall. Direct fetch is tried first; pages blocked from this node are fetched through a provider and marked source=provider. Metered: all web tools share 100 free calls/day per IP (separate from the risk/library allowance), then 1 credit per call over x402 - there is no API key; the 402 answer carries accepts[].
| Name | Required | Description | Default |
|---|---|---|---|
| ocr | No | Force OCR on scanned PDFs/images (auto-detected by default; set false to skip). | |
| url | Yes | The http(s) URL to read (max 2048 chars). | |
| format | No | Output format. Default markdown. | |
| max_chars | No | Truncate the returned content to this many characters (2000-20000). Default 8000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already declaring readOnly/idempotent/openWorld, the description adds real operational context: robots.txt compliance, no login/paywall bypass, direct-fetch-then-provider fallback with source=provider, caching, and per-call metering (100 free calls/day per IP, then 1 credit via x402, 402 carries accepts[]). It also describes the return payload in detail even though no output schema exists. The one blemish is an internal conflict: it says responses are 'capped at 12000 characters' while the schema documents max_chars defaulting to 8000, which could mislead about actual truncation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: what it does, then when, then when not, then returns, then limits/metering — a reader can stop after sentence one. It is dense and slightly overlong on metering detail, but almost every sentence carries information an agent needs; only the pricing sentence could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by enumerating the return fields (url, final_url, status, title, content, chars, truncated, fetched_at, source, cached, took_ms) and explaining truncation. It also covers auth ('no API key'), rate/credit limits, and failure path (402 with accepts[]), so an agent can call it and interpret the result without further lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; url, format and ocr semantics are already fully documented in the schema. The description only adds guidance for max_chars (raise up to 20000 for more content), and that guidance partly contradicts the schema's stated default of 8000 by implying a 12000 cap. Enum for format is documented in the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Fetch one public web page') plus the transformation applied (readable text as markdown/plain text, boilerplate stripped). The scope word 'one public web page' immediately separates it from web_crawl, web_map and web_fetch_batch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has an explicit 'When to use' clause keyed to having a specific URL, an explicit 'Do not use' list (crawling/mirroring, login-gated or paywalled pages, API/RPC endpoints, book text), and names the correct sibling for the last case (cyberlibrary_get_chapter). That level of routing detail is rare and leaves little inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_fetch_batchWeb Fetch BatchARead-onlyIdempotentInspect
Fetch up to 5 public URLs in one call and return each page's title, engine and a short snippet (first ~1200 characters), so an agent can triage several links quickly. When to use: search returned several candidate pages and you want a first pass over all of them; then call web_fetch on the ones worth reading in full. Do not use: when you need the complete text of a page (use web_fetch), or to crawl a site (use web_map). Returns: {ok, count, ok_count, results:[{url, ok, final_url, status, title, engine, chars, snippet, error?}], took_ms, _metering}. Partial failures do not fail the whole call. Metered: counts one call per URL against the shared web free bucket (50 URLs/day per IP together with web_fetch), then 1 credit per URL over x402 - max 5 URLs per call, no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | 1-5 http(s) URLs to fetch in one call. | |
| format | No | Snippet format. Default markdown. | |
| max_chars | No | Snippet length per page, 200-2000. Default 1200. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world/non-destructive, and the description adds a lot on top: partial failures don't fail the whole call, metering is one call per URL against a 50/day free bucket shared with web_fetch, then 1 credit per URL over x402, max 5 URLs, no API key. This is unusually rich 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then labeled 'When to use', 'Do not use', 'Returns', and metering sentences. Dense but every clause is load-bearing; only the metering detail is slightly verbose for a description field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating the return object fields (ok, count, ok_count, results with url/final_url/status/title/engine/chars/snippet, took_ms, _metering). Combined with metering and partial-failure semantics, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds practical meaning: it explains the ~1200-character snippet length (the max_chars default) and the 5-URL cap in terms of triage use. It does not document the format enum's effect beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) plus resource (up to 5 public URLs) and the exact output shape (title, engine, ~1200-char snippet), framing the goal as triage. It explicitly differentiates itself from web_fetch and web_map by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use scenario (search returned several candidates, want a first pass) and a named follow-up tool (web_fetch for full text), plus a 'Do not use' clause routing crawls to web_map. Both positives and exclusions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_mapWeb MapARead-onlyIdempotentInspect
Discover the URLs of one site - sitemap first, then same-host links from the homepage. When to use: you need the list of pages a site exposes before fetching a few of them. Do not use: as a crawler (max 50 URLs, no page content) or to bypass robots.txt. Returns: {url, final_url, count, urls:[{url,source}], cached, took_ms, _metering}. Metered: shares the web free bucket (100 calls/day per IP shared by all web tools), then 1 credit per call over x402 - there is no API key; the 402 answer carries accepts[].
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Site root or page URL (max 2048 chars). | |
| limit | No | Max URLs to return, 1-50. Default 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: sitemap-first strategy, same-host link discovery, max 50 URLs, no page content, robots.txt compliance, full return shape, caching, and detailed metering (100 calls/day shared bucket, 1 credit over x402, no API key, 402 accepts[]). Annotations already cover safety, but the description provides the operational behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then usage, then return shape, then metering. Every sentence carries actionable information; the metering detail is dense but necessary for a paid tool. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explicitly describes the return object fields including urls with source tags, cached, took_ms, and metering. It covers safety boundaries, scope, and cost — everything an agent needs to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are fully documented in the schema. The description repeats the 50-URL limit and URL source behavior, which is marginally useful, but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (discover URLs of one site) and explicitly distinguishes itself from crawler siblings, naming the exact boundary (max 50, no page content). An agent can identify this tool's job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'when to use' and 'do not use' sections, naming the alternative pattern (web_crawl) and the robots.txt constraint. It tells the agent both the positive trigger (needing a page list before fetching) and the anti-pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_metadataWeb MetadataARead-onlyIdempotentInspect
Extract a page's structured metadata: Open Graph, Twitter cards, canonical URL, language and JSON-LD. When to use: you need the title/description/author/image of a page, or JSON-LD structured data for a product/article, without reading the whole page. Do not use: when you need the page text (use web_fetch) or a screenshot (use web_screenshot). Returns: {ok, url, final_url, title, description, image, site_name, type, canonical, lang, jsonld[], cached, took_ms, _metering}. Metered: shares the web free bucket (100 calls/day per IP shared by all web tools), then 1 credit per call over x402 - there is no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The http(s) page URL (max 2048 chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, idempotent, non-destructive, openWorld), so the description adds metering and cost behavior: a shared 100 calls/day free bucket across all web tools, then 1 credit per call over x402 with no API key. That is genuinely useful operational context. It omits failure behavior (what happens on non-HTML or blocked pages) and whether 'cached' implies staleness, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then labeled When-to-use / Do-not-use / Returns / Metering blocks. Dense but every line carries distinct information an agent needs; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool, the description covers purpose, routing, the full return shape (compensating for the absent output schema), and metering constraints. Nothing material to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema coverage is 100%, with the schema itself documenting the http(s) URL and 2048-char limit. The description adds no further parameter guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Extract) and resource (page's structured metadata), then enumerates exactly the field families returned (OG, Twitter cards, canonical, language, JSON-LD). It is clearly distinguishable from web_fetch and web_screenshot by the explicit do-not-use routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use condition ('you need title/description/author/image ... or JSON-LD for a product/article, without reading the whole page') and explicit exclusions pointing to named siblings web_fetch and web_screenshot for text and screenshots respectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_monitor_deleteWeb Monitor DeleteARead-onlyIdempotentInspect
Delete one scheduled change monitor owned by the calling IP (its event history is removed too). When to use: the user no longer needs to watch a page, or the per-IP monitor limit was reached. Do not use: to pause a monitor temporarily - there is no pause; delete and re-create. Returns: {ok, deleted, monitor_id, note}; unknown or foreign ids return {ok:false,error:'monitor_not_found'} and delete nothing. Free (not metered); rate-limited to 20 calls/min per IP.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | monitor_id returned by web_monitor_set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool deletes a monitor and removes its event history, which is a destructive write operation. The annotations declare readOnlyHint=true and destructiveHint=false, directly contradicting the described behavior. Although the description adds useful details like cascade deletion, rate limits, and error behavior, the core mutation semantics conflict with the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: deletion scope and cascade effect come first, followed by usage guidance, return shape, error behavior, and rate limits. Every sentence carries operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description supplies the return shape, the error case for unknown or foreign ids, cost information, and rate limits. For a single-parameter tool, this is sufficiently complete, aside from the annotation contradiction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents that monitor_id is the id returned by web_monitor_set. The description does not add meaningful semantics beyond what the schema provides, so the baseline of 3 for full schema coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: deletes one scheduled change monitor owned by the calling IP, and explicitly notes the cascade removal of event history. This distinguishes it clearly from web_monitor_set and web_monitor_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use conditions are given (user no longer needs monitoring, per-IP limit reached), plus an explicit when-not-to-use case with the alternative: there is no pause, so delete and re-create. This is unusually complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_monitor_listWeb Monitor ListARead-onlyIdempotentInspect
List the scheduled change monitors owned by the calling IP, with latest/next check time, last title or error, and the 5 most recent change events. When to use: after web_monitor_set, poll this instead of re-fetching the page; or to show the user what is currently being watched. Do not use: to create a monitor (web_monitor_set) or to compare one page now (web_diff). Returns: {ok, count, monitors:[{monitor_id,url,interval_minutes,active,created_ts,last_check_ts,next_check_ts,last_title,last_error,webhook_enabled,events_total,recent_events}], note}. Pass monitor_id to get that one monitor plus last_event.diff (the most recent detected change, up to 4000 chars) so you can read what changed without a webhook. Free (not metered); rate-limited to 20 calls/min per IP.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | No | Optional: return this monitor (owned by the calling IP) plus its most recent change diff. | |
| include_diff | No | With monitor_id, include the latest unified diff. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds the traits annotations can't: ownership is scoped to the calling IP, the call is free but rate-limited to 20 calls/min, and passing monitor_id unlocks the last diff. The full return object shape is spelled out. This is genuinely additive 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then returns, then cost — a sensible ordering. The inline return-shape enumeration is dense and slightly heavy, but every element conveys something an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description compensates by enumerating the returned object including nested monitor fields and the events array. With rate limits, ownership scope, and the monitor_id variant all covered, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented; baseline would be 3. The description still adds value by tying monitor_id to the concrete outcome (single monitor plus last_event.diff, up to 4000 chars), which the schema does not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the scheduled change monitors') with an explicit scope ('owned by the calling IP') and enumerates the returned fields. It also names the siblings it is not (web_monitor_set, web_diff), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('after web_monitor_set, poll this instead of re-fetching') and an explicit 'Do not use' clause naming the correct alternatives for creation and one-off comparison. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_monitor_setWeb Monitor SetARead-onlyIdempotentInspect
Create a scheduled change monitor for one public URL: the server re-fetches the page on an interval, stores a new snapshot and records a diff event whenever the readable text changes. When to use: the user wants to be told when a page changes (price, docs, policy page, job post, release notes) and cannot poll it themselves; also for handing off 'watch this for me'. Do not use: for a single comparison right now (web_diff) or when you only need the page today (web_fetch). Returns: {ok, monitor_id, url, status:active, interval_minutes, next_check_ts, webhook_enabled, webhook_secret?, webhook_signature?, hint}. The first check runs within ~60s to store the baseline; later changes show up in web_monitor_list.recent_events and, if requested, are POSTed to webhook_url. Webhook: https only, no redirects, 8s timeout, up to 2 retries (30s/120s); body JSON {monitor_id,url,ts,changed,added_lines,removed_lines,title,diff,event_id}; verify header 'X-RobotBase-Signature: sha256='. Limits: 15-1440 minutes; max 5 monitors per IP; monitors expire after 7 days. Metered: 1 credit (shares the web free bucket of 100 calls/day per IP).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The http(s) URL to watch (max 2048 chars). | |
| webhook_url | No | Optional https endpoint notified on each change (HMAC-signed). | |
| interval_minutes | No | Check interval 15-1440 minutes. Default 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description itself is unusually rich — webhook contract (https only, no redirects, 8s timeout, 2 retries at 30s/120s), HMAC signature header, first-check timing, limits (15–1440 min, 5 per IP, 7-day expiry) and metering. However it describes a state-creating operation ('Create... stores a new snapshot and records a diff event') while annotations declare readOnlyHint=true and idempotentHint=true; registering a monitor is a persistent write with quota/expiry consequences. The description is more accurate than the annotation, which limits practical harm, but the conflict is real.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose first, then use/do-not-use, then returns, webhook contract, limits and cost. Every sentence carries operational information, though the single unbroken block would scan better with the labeled sections broken into lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still specifies the return shape ({ok, monitor_id, url, status, interval_minutes, next_check_ts, webhook_enabled, ...}), where change events surface (web_monitor_list.recent_events), the baseline timing, and the cost. An agent has everything needed to call this correctly and set expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and documents all three params, so the baseline is 3; the description adds genuine meaning on top: webhook must be https with no redirects, the interval bound 15–1440, the max-5-monitors-per-IP cap, and the exact signature header format. What it does not clarify is override/duplicate behavior when the same URL is monitored twice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a scheduled change monitor for one public URL') and immediately explains the mechanism: re-fetch on interval, store snapshot, record diff event. It also names the siblings it is not (web_diff for a one-shot comparison, web_fetch for a single read), so an agent can discriminate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' block with concrete triggers (price, docs, policy page, job post, release notes, 'watch this for me') and an explicit 'Do not use' block routing to web_diff and web_fetch with the selecting condition. This is the textbook when/when-not/alternative structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_screenshotWeb ScreenshotARead-onlyIdempotentInspect
Capture a screenshot of one public web page as an image (JPEG) plus metadata. When to use: visual layout matters - a dashboard, chart, UI state, or 'what does this page look like'. Do not use: to read text (use web_fetch), for pages behind a login or paywall, or for bulk capture. Returns: image content (image/jpeg) plus {url, final_url, title, width, height, bytes, engine, elapsed_ms, _metering}. Rendered by a real Chromium browser, robots.txt-respecting, SSRF-guarded, max 3MB per image. Metered: shares the web free bucket (100 calls/day per IP shared by all twelve web tools), then 2 credits per call over x402 - there is no API key; the 402 answer carries accepts[].
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The http(s) URL to capture (max 2048 chars). | |
| width | No | Viewport width 320-1920. Default 1280. | |
| height | No | Viewport height 240-1200. Default 800. | |
| full_page | No | Capture the whole page instead of the viewport. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld/idempotent annotations: real Chromium rendering, robots.txt respect, SSRF guarding, a 3MB per-image cap, and full metering terms (100/day shared free bucket across twelve web tools, then 2 credits via x402, no API key, 402 response carries accepts[]). These are exactly the operational facts an agent needs before calling a network-dependent paid tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then when-to-use, exclusions, return shape, and metering in a logical order with clear labels. It is dense but every clause carries information; the metering sentence is long yet operationally necessary since no API key exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the return payload: image/jpeg content plus url, final_url, title, width, height, bytes, engine, elapsed_ms, and _metering. Combined with documented failure/metering behavior, an agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so url, width, height, and full_page are already fully documented with ranges and defaults. The description adds only the implicit 'one public web page' single-URL constraint and no per-parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Capture a screenshot of one public web page as an image (JPEG) plus metadata') and explicitly scopes it to a single page. It is clearly distinguishable from web_fetch and bulk-capture siblings, which are named in the exclusion clause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ('visual layout matters – a dashboard, chart, UI state') and explicit when-not-to-use cases, naming the alternative for text reading ('use web_fetch'). Login, paywall, and bulk capture are ruled out by name rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchWeb SearchARead-onlyIdempotentInspect
Search the live web and get ranked results with title, URL, snippet and published date. When to use: an agent needs current facts, news or links that are not on chain - 'what is the BTC fee market saying today', 'recent Zcash governance proposals', 'find the docs page for X'. Use it before web_fetch, then fetch the one URL that looks authoritative. Do not use: for on-chain facts (use the BTC/ETH/XMR/ZEC/TRON tools) or for content inside a CyberLibrary book (use cyberlibrary_fulltext_search). Provider: self-hosted SearXNG (Bing/Baidu/360/Sogou/Yandex/Marginalia) first, then Serper, Tavily and cn.bing RSS as automatic fallbacks. Returns: {query, count, results:[{title,url,snippet,published}], provider (serper|tavily|bing_rss), cached, took_ms, _metering}. Results may be cached for up to 10 minutes; a cached result still counts as one call against the free allowance. Metered: all web tools share 100 free calls/day per IP (separate from the risk/library allowance), then 1 credit per call over x402 - there is no API key; the 402 answer carries accepts[]. max count is 10.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional language preference, e.g. zh-cn or en. | |
| site | No | Optional: restrict results to one domain, e.g. github.com. | |
| count | No | Number of results to return, 1-10. Default 5. | |
| query | Yes | Search query (1-200 characters). | |
| freshness | No | Optional freshness filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description adds substantial context beyond them: a SearXNG-first provider chain with automatic Serper/Tavily/bing_rss fallbacks, a 10-minute cache that still bills as a call, and a metering model (100 free calls/day per IP, then 1 credit via x402, no API key, 402 carries accepts[]). These are exactly the operational traits an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then when-to-use, then exclusions, then operational details in a predictable order. Dense and mostly waste-free, though the returns-shape block and the max-count sentence sit slightly awkwardly after the metering discussion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by spelling out the response object, including provider, cached and took_ms fields. Caching, metering, fallback behavior and result limits are all covered, leaving nothing an agent needs in order to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (lang, site, count, query, freshness) is already documented in the schema. The description's only parameter remark, 'max count is 10', restates the schema's 1-10 range and adds nothing new. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search the live web) plus the exact return shape (title, URL, snippet, published date). It explicitly distinguishes itself from the sibling tools an agent might confuse it with: web_fetch, the on-chain tools, and cyberlibrary_fulltext_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete use-case examples in the agent's own voice ('recent Zcash governance proposals'), an explicit ordering rule ('use it before web_fetch, then fetch the one URL that looks authoritative'), and a 'Do not use' section that routes to named alternatives with the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
35 tool updates
- First observed
attention_trend - First observed
cyberlibrary_book_meta - First observed
cyberlibrary_catalog_index - First observed
cyberlibrary_cite - First observed
cyberlibrary_fulltext_search - First observed
cyberlibrary_get_chapter - First observed
cyberlibrary_get_chunks - First observed
cyberlibrary_get_markdown - First observed
cyberlibrary_get_toc - First observed
cyberlibrary_language_shard - First observed
cyberlibrary_rag_context - First observed
cyberlibrary_search - First observed
cyberlibrary_search_books - First observed
cyberlibrary_search_passages - First observed
cyberlibrary_semantic_search - First observed
cyberlibrary_service_info - First observed
cyberlibrary_verify_quote - First observed
social_hot - First observed
web_act - First observed
web_crawl - First observed
web_crawl_async - First observed
web_crawl_job - First observed
web_diff - First observed
web_extract - First observed
web_extract_schema - First observed
web_feed - First observed
web_fetch - First observed
web_fetch_batch - First observed
web_map - First observed
web_metadata - First observed
web_monitor_delete - First observed
web_monitor_list - First observed
web_monitor_set - First observed
web_screenshot - First observed
web_search
Related MCP Connectors
Agent MCP: 65 tools — 5-chain verification, risk, prediction & crypto trends, 17 web tools.
Agent MCP: 18 tools — GitHub/HF/npm/PyPI/HN trends plus 17 web tools for coding agents.
181100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
MCP tools for agents: web research, content extraction, email, DNS, and blockchain intelligence.
Related MCP Servers
- AlicenseAqualityCmaintenanceWeb intelligence MCP server for AI agents. 7 tools for SERP analysis, competitor research, market trends, content gap analysis, keyword insights, audience discovery, and citation tracking.72AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceViral-content intelligence for AI agents — 7 read-only MCP tools for TikTok/YouTube hook scoring, virality prediction, trend analysis, and viral template search, with evidence-layer scoring.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for trend-pulse, an agentic trend intelligence platform that fetches and analyzes trending topics from 37 sources, provides search, historical data, and lifecycle prediction via 29 tools.242 PyPI63MIT
- AlicenseCqualityBmaintenanceGives any MCP client 27 tools for turning scattered feeds, forums, and media into a persistent, searchable evidence corpus, so an agent can search and import evidence, verify claims with independent-source counting and citation checks, and run multi-round research that produces cited, revisable reports. It also supports adaptive retrieval widening, tiered evidence where only author-written sections count as sources, and honest degradation when no LLM key is available.27MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
social_hotSocial HotARead-onlyIdempotent Inspect
Cross-platform social hot lists: Baidu, Toutiao, Douyin, Bilibili and Hacker News. When to use: what people are talking about now, content ideas, trend discovery. Do not use: for search interest over time (attention_trend) or general web search (web_search). Returns: {platform, count, items:[{title, heat, url, source}], errors}.
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds value by disclosing the response envelope including an `errors` field, signalling partial-failure behavior across platforms. It does not mention freshness/latency or rate limits, which would push it to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three labeled clauses (purpose / when to use / do not use / returns) with zero filler and the purpose front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description supplies the return shape inline ({platform, count, items:[{title, heat, url, source}], errors}). Combined with the top-level selection guidance and platform coverage, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden — it names the platforms (mapping to the enum) but says nothing about `limit` (range 1-30, default 10) or what `platform: all` aggregates. Partial compensation for two undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("cross-platform social hot lists") and enumerates the exact platforms covered. An agent can immediately tell this apart from attention_trend and web_search without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names when to use it ("what people are talking about now, content ideas, trend discovery") and when not to, routing to two named alternatives (attention_trend for search interest over time, web_search for general web search). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.