engawa
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool is highly distinct: rss_read and web_read/shelf/sky_tonight/apod/daily_art/arxiv_new/daily_poem/on_this_day all target clearly separate content sources and purposes. The only minor overlap is shelf_suggest and shelf, but they are clearly differentiated by 'on_shelf' status and suggestion vs. current shelf.
Naming Consistency4/5Most tools follow a clear pattern: descriptive lowercase snake_case names like `rss_read`, `daily_poem`, `shelf_add`. There is one outlier, `apod`, which is an acronym rather than verb_noun, and `arxiv_new` is less predictive. However, overall the naming is intuitive and mostly consistent.
Tool Count5/512 tools is well within the ideal range for a curator/reader server. Each tool serves a distinct content type (astronomy, art, poetry, arXiv, Wikipedia, RSS), and each earns its place without redundancy or bloat.
Completeness4/5The tool set covers a coherent lifecycle: discover sources (shelf, shelf_suggest), read feeds (rss_read), read full articles (web_read), and add/remove custom sources (shelf_add, shelf_remove). Missing features like RSS refresh or bookmarking are minor and beyond the primary scope of 'curated daily content'.
Average 4.1/5 across 12 of 12 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 12 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions the return structure but does not disclose any side effects, permissions, rate limits, or error handling. It implies a read-only operation but doesn't explicitly state it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a summary line followed by clear argument and return sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main functionality, parameters, and return format. However, it doesn't explain potential pitfalls like pagination limits or the meaning of 'summary' versus 'abstract', leaving some gaps for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description elaborates on the parameters: category is given with examples (cs.AI, cs.CL, etc.), and limit is defined as 'max papers returned' with a default. This goes beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: 'Newest arXiv papers in a category' and specifies including title, authors, and abstract. This is unambiguous and distinguishes it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. It simply describes what it does without indicating scenarios or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided (empty), so description carries burden. It discloses that unsupported languages cause 404, and returns a note, but doesn't mention rate limits, error handling, or what happens on no events. It provides some transparency but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, with clear sections for note, args, and returns. Front-loaded with purpose. No wasted sentences; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 optional params and no output schema, the description adequately covers behavior, limitations, and return structure. It could mention the date context (implicitly today's date) but overall complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions in schema), but the description explains both 'lang' and 'limit' with defaults and purpose. It adds meaning beyond schema, so it compensates somewhat. However, it doesn't specify format constraints like language code pattern or max limit value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns Wikipedia's curated 'on this day' events, with a specific resource (Wikipedia API) and verb (get events). It doesn't explicitly differentiate from siblings like 'web_read' or 'rss_read', but its purpose is distinct and clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for fetching historical events for a given date, but doesn't provide explicit when-to-use vs alternatives. It mentions language support limitation, which is useful, but no clear exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly explains the return value and the meaning of 'on_shelf=True,' which is helpful for understanding what the tool does. However, it doesn't elaborate on the exact algorithmic nature of what makes it a 'second ring' or if there are any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, directly explaining the tool's purpose in a few sentences and providing a clear text representation of the return type. The structure effectively separates the primary purpose from the output definition, making it easy to parse for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the lack of an output schema and annotations, the description provides a good understanding of the tool's purpose and output. It clarifies the one parameter it has and explains the structure of the response, covering the required bases for a tool of this low-level complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the parameter `tag` depends entirely on the description. The description explicitly clarifies, 'tag: filter to one shelf tag, empty = everything,' adding significant meaning about the filtering behavior and default behavior that goes beyond the raw type definition in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it finds 'A second ring of verified sources that are not on the default shelf,' which gives a specific purpose and implicitly distinguishes it from other tools like shelf_add or shelf. While it's clear, it doesn't explicitly name sibling tools for direct differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description shows how to act on the output by saying 'shelf_add(url=its url, name=its name)', which implies a workflow, but does not explicitly clarify the difference between 'second ring' and 'default shelf' or when to prefer this over the alternative 'shelf' tool for direct listing. Clear usage context is implied but not explicitly spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses a key constraint (built-ins cannot be removed) and gives the return format. However, it doesn't mention error handling, reversibility, or what 'note' contains. It adds some value but lacks richer 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one clear sentence plus a structured Args/Returns block. Every word earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter mutation tool with no output schema, the description covers the core purpose, the constraint, and the return shape. However, it omits potential error conditions, idempotency, and the meaning of 'note', leaving some gaps. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It only says 'name: shelf name', which is redundant with the parameter title and gives no additional details about valid values, format, or case sensitivity. This adds minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Remove a user-added source from the shelf' with the specific verb 'remove' and resource. It distinguishes from siblings like shelf_add by explicitly scoping to removal of user-added sources (excluding built-ins).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear exclusion ('built-ins cannot be removed') that tells the agent when not to use it. It doesn't name explicit alternatives, but the sibling context (shelf_add, shelf_suggest) makes the usage implied. This is clear context without explicit exclusions remaining.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does an excellent job: it discloses feed discovery logic (page-declared <link> first, common paths as fallback), verification via real fetch before saving, and collision handling with '-2' suffix. It does not mention rate limits or failure modes, but the key behavioral traits are articulated clearly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise lead sentence, a bulleted Args list, and a Returns line, front-loading the core behavior. It could be slightly tighter, but every sentence provides meaningful information without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and minimal input schema, the description covers all crucial aspects: input constraints, default behaviors, return values, and the underlying fetch/verify workflow. It even documents the exact return tuple, making this sufficient for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section in the description adds substantial meaning beyond the schema: it specifies URL format, name constraints (lowercase/digits/hyphens, 2-40 chars, empty→domain-derived, collision suffix), note as one-liner, tag vocabulary, and picked_by as free-form provenance. The schema itself only provides 'string' type and default empty strings, so the description is essential and complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a source to the shelf' and explains the feed discovery behavior, making the tool's function specific. It doesn't explicitly reference sibling tools like shelf_remove or shelf_suggest, so differentiation is implied through the 'add' verb rather than named alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to choose this tool over siblings like shelf_suggest or shelf_remove. The description explains what the tool does but lacks explicit when-to-use or when-not-to-use context, leaving the agent to infer based on name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the external API dependency (Jinrishici), the Chinese-language output, and the return fields. It omits failure modes or network details, but for a zero-parameter read-only tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences. It conveys the core purpose, the Chinese-language caveat, and the return format without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description covers the main purpose and return structure. Minor gaps like error handling or the meaning of 'note' are acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description adds the output field names (ok, sentence, title, dynasty, author, full, note), which is helpful for parsing the response despite no input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a line of classical Chinese poetry matched to the season and hour, along with the full source poem. This specific verb-like description distinguishes it from sibling content tools like apod or daily_art.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it is for poetry-related requests but does not mention exclusions or compare with siblings like shelf or rss_read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden — and it delivers meaningful behavioral context. It discloses the two-layer data structure (built-in vs. user-added), the tag-filtering semantics, the empty-tag-returns-everything behavior, and the return tuple shape including source and picked_by fields. It explains what data a user sees and how curation is tracked. Loses a point for not addressing staleness, update semantics, or potential side effects (though clearly a read).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear Args/Returns sections and a useful three-line intro. Every sentence earns its place — the two-layer explanation, the rss_read integration hint, and the param/return docs. The 'engawa' poetic opener is charming but slightly obscure; overall, tight and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param, no-annotation, no-output-schema tool, the description covers the param semantics, return shape, and data model well. Minor gaps: field-level semantics of entries (e.g., what 'picked_by' means, how 'title' relates to 'name'), and sorting/pagination behavior. But given the tool's simplicity and the sibling ecosystem, it's quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully compensates for the sole 'tag' parameter. It provides the exact enum-like values (science/ocean/longform/architecture/wonder), documents that empty string means 'return everything', and clarifies filtering semantics. This is exactly what parameter documentation should look like when the schema is sparse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a curated collection of feed sources (name/one-liner/tags) that feeds into rss_read. It distinguishes itself from siblings by being the base listing operation among shelf_add/shelf_remove/shelf_suggest, though it doesn't explicitly state 'list all feeds'. The engawa metaphor adds ambiguity, but the practical purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the data model (two layers: built-in picks plus user additions via shelf_add) and points to feeding names into rss_read, implying usage context. However, it never explicitly states when to use this vs. alternatives like 'use rss_read to read content' or 'use shelf_suggest for recommendations'. Usage is implied through ecosystem references, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It discloses timezone-dependent availability, a 404 retry strategy, and the full return shape. It does not explicitly state read-only status or auth needs, but these are reasonable for a public NASA API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with Args and Returns sections. No waste; every sentence adds useful information about format, defaults, or output fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only API with no output schema, the description covers the essential behavior, output fields, and a date edge case. It could be slightly richer on media_type semantics or error responses, but it is sufficient for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage for the date parameter, and the description fully compensates by specifying format ('YYYY-MM-DD'), empty default, timezone nuance, and error recovery. This is exactly the needed parameter-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as NASA's Astronomy Picture of the Day and lists the returned fields (title, explanation, image URL). It lacks an explicit verb like 'fetch' and does not explicitly distinguish from sibling tools, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides operational guidance for the date parameter (empty = today, US Eastern time, 404 fallback to yesterday) but does not state when to choose this tool over siblings like daily_art or sky_tonight. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It covers the deterministic behavior (date-seeded, same artwork on repeated calls), the two modes (daily piece vs. search), and the return structure. It also discloses that no API key is needed. It lacks details on error handling or rate limits, but for a read-only art retrieval tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, with two short paragraphs and a clear return list. The main purpose is front-loaded, and every sentence adds value—no fluff. The structure is easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema, no annotations), the description is remarkably complete. It explains the two behaviors, the deterministic nature, the search language note, and the exact return fields. There are no critical gaps for an AI agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a bare 'keyword' parameter with no description (0% schema coverage). The description fully compensates by explaining that without a keyword, the tool returns the piece of the day, and with a keyword it searches, giving examples like 'monet', 'cat', 'moon'. This is rich semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'One artwork a day from the Art Institute of Chicago's public-domain collection.' It clearly specifies the resource (artwork from Art Institute of Chicago) and the action (retrieve one artwork per day), and distinguishes it from siblings by mentioning the keyword search mode, which covers both daily piece and search functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance on when to use the tool with and without a keyword, and notes that English terms work best. It also mentions that no API key is needed, a prerequisite. However, it does not explicitly compare to sibling tools or state when NOT to use this tool, so it misses the 'when-not' and 'alternatives' aspects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It clearly signals read-only behavior by saying 'Read,' describes the returned structure, and notes the special shelf-name input. It lacks explicit error/failure semantics, but it fully discloses the core behavior and output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The first sentence states the core function, followed by a useful usage note, then a clear Args/Returns structure. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description is remarkably complete. It documents both parameters, the return shape, and how the tool fits into a browse loop with web_read and shelf. Missing error handling is a minor gap, but the tool is simple and the description covers all essential usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates with an Args block. It defines feed_url as a full feed URL or a shelf name, which is essential extra semantics, and limit as max entries returned (default 10). This is significant value beyond the bare schema, though the limit description is somewhat minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read any RSS/Atom feed: latest entries as a list,' which clearly states the verb, resource, and output shape. It also differentiates itself from siblings by positioning itself as the discovery half of a browse loop and explicitly mentioning web_read for full text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use this tool: 'The discovery half of a browse loop: spot an interesting entry, then web_read its link for the full text.' It also mentions the shelf-name alternative and points to the shelf tool, providing clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral aspects: it computes locally, requires environment variables (ENGAWA_LAT/ENGAWA_LON), and never touches the network. It also specifies the return structure and date handling, offering complete transparency beyond what structured fields would provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, then concise details about computation and arguments. Every sentence adds value, and the return format is listed clearly. There is no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter) and no output schema, the description covers all necessary context: the exact computation method, network behavior, environment prerequisites, and the full list of returned fields. It is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'date' is fully explained: it must be in 'YYYY-MM-DD' format, and an empty string defaults to today in the local timezone. This adds substantial meaning beyond the schema, which has no description for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's purpose: it provides tonight's sky information including moon phase, illumination, rise/set times, sunset, next full/new moon, and visible planets. This is specific and distinct from sibling tools like apod or daily_art, which focus on other content types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates this is the only local, network-free tool, implying it should be used when offline or for sky data. It also explains the optional date parameter. However, it does not explicitly contrast with alternatives or state when not to use it, so it stops short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so admirably. It discloses the asynchronous fallback to a browser renderer for SPAs, the optional dependency (`engawa-mcp[browser]`), the stateless nature (no login/history), and the limitation with login-walled sites. This is exactly the kind of behavioral context that helps an agent set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Despite its length, the description is well-structured with clear labels (Boundaries, Args, Returns) and front-loaded with the core purpose. Every sentence adds value—the implementation detail of static vs. browser fallback is relevant for performance expectations, and the 'note' field disclosure avoids surprising the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description specifies the exact return shape ({ok, title, content, total_length, links (≤10), note}) and clarifies edge-case behavior (e.g., pagination, link following). This makes the tool fully usable without external documentation, which is especially valuable for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, so the description compensates fully. The Args section explains `url` (full URL with scheme), `offset` (character offset for paging), and `length` (max characters, default 3000). It also explains the behavior of the return fields, particularly `total_length` for pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Read any web page: give a URL, get title + clean article text + links.' It clearly differentiates the tool from siblings by focusing on generic web fetching, which is distinct from the more niche sibling tools like rss_read and shelf. The output contract (title, content, links) is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use: 'No login state, no history,' 'To "click" a link, call web_read again,' and explicitly excludes login-walled platforms like x.com. It also explains the two execution lanes (static vs. SPA fallback) and paging, giving the agent clear context about boundaries and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md: