Skip to main content
Glama
 ____  ____ ____    _   _                     __  __  ____ ____  
|  _ \/ ___/ ___|  | \ | | _____      _____  |  \/  |/ ___|  _ \ 
| |_) \___ \___ \  |  \| |/ _ \ \ /\ / / __| | |\/| | |   | |_) |
|  _ < ___) |__) | | |\  |  __/\ V  V /\__ \ | |  | | |___|  __/ 
|_| \_\____/____/  |_| \_|\___| \_/\_/ |___/ |_|  |_|\____|_|    
                                                                

lang-中文 npm-@max1ab/rss-news

Cut through noise and clickbait. With one npx command, your AI can connect to and process first-hand news sources.

Install MCP

npm package install:

npm i -g @max1ab/rss-news

Add this server to your MCP config:

{
  "mcpServers": {
    "rss-news": {
      "command": "rss-news"
    }
  }
}

Examples

You can directly say things like this to an AI that supports MCP:

  1. Help me review the past 24 hours of news, summarize the important items, and organize the summary into Notion.

  2. Help me check unread news, pick the most important items, and send a message to my phone.

  3. Help me follow the latest OpenAI news. If I am not subscribed yet, add suitable subscriptions first.

  4. Help me search for some AI-related RSS sources, preview the content quality, and subscribe to the good ones.

  5. Help me count how many unread news items appeared in the past 24 hours, grouped by source.

Features

  • Manage subscriptions

  • Sync the latest news

  • Fetch unread news

  • Consume news

  • Count news

  • Reset state

Seed example subscriptions from example-subscriptions.json when a new database is created

Related MCP server: MCP RSS

Advanced Setup

Environment Variables

  • RSS_MCP_DB_PATH: SQLite path (default: %APPDATA%/rss-news/rss.sqlite on Windows, ~/.local/share/rss-news/rss.sqlite on other platforms)

  • RSS_MCP_REQUEST_TIMEOUT_MS: fetch timeout in milliseconds (default: 15000)

  • RSS_MCP_DEFAULT_FETCH_LIMIT: default global fetch limit (default: 20)

  • RSS_MCP_MAX_FEEDS_PER_REQUEST: max feed count for each call (default: 50)

  • RSS_MCP_USER_AGENT: custom request User-Agent

  • RSS_MCP_DEBUG: set 1 or true to enable debug logs

  • RSS_MCP_DEBUG_PREVIEW_LENGTH: preview length of response body for debug (default: 300)

Local Development

npm install
npm run build
npm start

Development:

npm run dev

Run tests:

npm test

Current Tools

  • Database file is created lazily on first repository usage if it does not exist.

  • subscriptions: stores subscribed feeds plus fetch metadata

  • entries: stores fetched entries (feed_url + entry_uid is unique)

  • deliveries: stores which entries have already been consumed

Available MCP tools:

  • list_subscriptions

  • upsert_subscriptions

  • remove_subscriptions

  • preview_feed Preview one or more feed URLs before subscribing, to confirm they can be fetched and the content is suitable.

  • sync_news

  • fetch_news

  • consume_news

  • count_news

  • set_consumption_status

Available Tools

9 tools
consume_newsC

Read the latest news and mark unread items as consumed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
categoryNo
feedUrlsNo
sinceMinutesNo
includeConsumedNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It does explicitly expose the mutating behavior ('mark unread items as consumed'), which is useful. However, it does not disclose whether consumption is reversible, whether consumed items are hidden by default, what the return format is, or any rate-limit or permission implications.

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

Conciseness4/5

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

The description is a single sentence with no filler and the main verbs appear early. It is concise, though bundling 'read' and 'mark' into one clause slightly muddies the structure.

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

Completeness1/5

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

For a state-changing tool with 5 parameters, no annotations, and no output schema, this description is far too incomplete. An agent cannot determine return behavior, default filtering, consumption side effects, or how this tool relates to fetch_news and set_consumption_status.

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

Parameters1/5

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

The input schema has 5 parameters with 0% description coverage, and the tool description does not explain any of them by name. limit, category, feedUrls, sinceMinutes, and includeConsumed all lack meaningful guidance, leaving the agent to guess their semantics.

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

Purpose4/5

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

The description states a clear action on a resource: 'Read the latest news and mark unread items as consumed.' This distinguishes it from siblings like fetch_news (read-only) or set_consumption_status (status changes only). However, it is slightly ambiguous whether 'read' returns the news content or merely advances consumption state.

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

Usage Guidelines3/5

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

The description implies the tool is for consuming the latest news and marking it as read, which gives some context. But it does not explicitly say when to prefer this over fetch_news or set_consumption_status, nor does it provide exclusions or alternative guidance.

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

count_newsC

Count recent news items across subscribed feeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
feedUrlsNo
pastHoursYes
includeConsumedNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits itself. It does not mention that counting is a read-only operation, what 'recent' means, whether consumed items are excluded by default, or how optional filters affect the count.

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

Conciseness4/5

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

The description is a single focused sentence with no wasted words. It is front-loaded with the core action and resource, though it could use additional sentences to explain parameters and behavior without becoming verbose.

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

Completeness2/5

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

With no annotations and no output schema, the description is expected to carry more context. It is incomplete for a four-parameter tool, failing to clarify the time window, filter behavior, inclusive/exclusive consumption state, or return shape.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the four parameters. It provides only weak hints ('recent' suggests pastHours, 'subscribed feeds' suggests the default scope) and says nothing about category, feedUrls, or includeConsumed semantics.

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

Purpose4/5

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

The description uses a specific verb ('count') and a clear resource ('recent news items across subscribed feeds'), which makes the core operation understandable. It is distinguishable from siblings like fetch_news or consume_news by its focus on counting, though it does not explicitly name or contrast any sibling.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as fetch_news or sync_news. The description only states what the tool does, leaving the agent to infer appropriate usage from the tool name and sibling list.

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

fetch_newsA

Read the latest news from local storage without changing read state. Unsubscribed feedUrls are not allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
categoryNo
feedUrlsNo
sinceMinutesNo
includeConsumedNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It clearly states it won't modify read state and adds the non-obvious constraint that unsubscribed feedUrls are rejected. However, it doesn't mention what happens when no feedUrls are provided, whether includeConsumed changes default behavior, or any error/return specifics.

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

Conciseness5/5

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

Two sentences with zero waste. The first sentence front-loads the core action and side-effect-free nature; the second sentence adds the one critical constraint an agent must know before calling. Ideal length for this tool.

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

Completeness3/5

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

Given there is no output schema and no annotations, the description is adequate but incomplete. It covers the read-only aspect and the subscription rule, but an agent is left guessing about filtering defaults, the meaning of includeConsumed, and error scenarios when invalid feedUrls are passed. Sibling names provide some context but not enough.

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

Parameters3/5

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

The description adds limited parameter-level meaning: it explains that feedUrls must be subscribed. The schema already provides types, ranges, and formats for all parameters, so the description doesn't need to repeat that. But it doesn't clarify the interplay between filter parameters (e.g., category vs feedUrls) or the effect of includeConsumed.

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

Purpose4/5

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

The description states a specific verb ('Read') and resource ('latest news from local storage'), and clarifies a key behavioral nuance: it does not change read state. This distinguishes it from sibling tools like mark_read, though it doesn't explicitly name the alternatives.

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

Usage Guidelines3/5

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

The description implies this is the read-only counterpart to mark_read ('without changing read state') and implies a subscription prerequisite ('Unsubscribed feedUrls are not allowed'), but it doesn't explicitly say when to prefer this over request_sample_news or other siblings.

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

list_subscriptionsA

List subscribed RSS feeds and their current sync metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. The verb 'List' transparently signals a read-only operation, and 'current sync metadata' indicates what state is returned. It does not disclose pagination or error behavior, but for a simple list tool the core behavior is clear.

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

Conciseness5/5

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

A single, front-loaded sentence conveys the tool's purpose and output without any filler. Every word adds information, making it easy for an agent to parse quickly.

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

Completeness3/5

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

For a one-optional-parameter list tool with no output schema, the description is minimally adequate: it names the returned object types. However, it omits category filtering semantics and any details about how sync metadata is represented, leaving an agent to guess at the exact call behavior.

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

Parameters2/5

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

Schema description coverage is 0% for the one optional 'category' parameter, and the description never mentions it or explains how it filters results. The parameter name is self-explanatory, but the description adds no meaning beyond the schema and fails to compensate for the missing schema documentation.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('subscribed RSS feeds') and adds 'current sync metadata', making its read-only listing purpose unmistakable. This clearly distinguishes it from mutation-focused siblings like upsert_subscriptions and remove_subscriptions.

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

Usage Guidelines2/5

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

The description implies the tool is for viewing subscriptions, but it gives no explicit guidance on when to choose it over alternatives such as fetch_news or sync_news, and it does not mention any exclusions or sibling tools. An agent must infer the appropriate context from the verb alone.

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

preview_feedA

Preview one or more feed URLs without subscribing, for example to verify fetchability and content before subscribing. Known RSSHub instance URLs are normalized to rsshub://.... For example, RSSHub routes can be discovered at https://docs.rsshub.app/routes/.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
feedUrlsYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It usefully discloses that no subscription is created and that RSSHub URLs are normalized to rsshub://, which is behaviorally relevant. However, it does not mention whether network fetches occur, what the response contains, or whether any other side effects exist.

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

Conciseness5/5

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

The description is two sentences, front-loads the core purpose, and adds a helpful RSSHub documentation pointer. There is no filler, and each sentence contributes useful information for selecting or invoking the tool.

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

Completeness2/5

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

Given that there is no output schema and no annotations, the description should clarify what a preview returns—such as feed content, fetchability status, or errors—so the agent can use the result. It also leaves the limit parameter unexplained. The core purpose is clear, but important invocation details are missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It covers feedUrls by saying 'one or more feed URLs' and adds meaningful normalization semantics for RSSHub URLs. However, the limit parameter is never mentioned, leaving its meaning and impact undocumented for the agent.

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

Purpose5/5

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

The description states a specific action: preview one or more feed URLs without subscribing, in order to verify fetchability and content. This clearly distinguishes it from subscription tools like upsert_subscriptions and fetch_news, making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description gives clear context: use this before subscribing to verify a feed. It explicitly says 'without subscribing' and offers a concrete use case. It stops short of naming alternative tools for the actual subscription step, but the intended usage boundary is still clear.

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

remove_subscriptionsA

Remove RSS subscriptions, with optional purge of stored entries and read state. RSSHub subscriptions must be removed using their stored rsshub://... feedUrl.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
feedUrlsYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden, and it does disclose the key side effect: the optional purge of stored entries and read state. It also flags a required input form for RSSHub. It leaves default mode behavior and irreversibility unstated, but the disclosed behavior goes well beyond the name and schema.

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

Conciseness5/5

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

Two sentences with no filler: the main action is first, the purge option is next, and the important RSSHub feedUrl rule closes the description. Every clause contributes information.

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

Completeness4/5

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

For a two-parameter destructive tool with no annotations and no output schema, the description covers the action, the optional side effect, and a crucial input constraint. Missing specifics are the default behavior of mode=unsubscribe and response/error semantics, but these are modest gaps rather than blockers.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It maps the mode parameter to the purge behavior and gives a concrete feedUrls format requirement (stored rsshub://... URLs). It does not spell out both enum options or array limits, but those are either self-evident or contained in the schema.

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

Purpose5/5

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

The description uses a specific imperative verb and resource: 'Remove RSS subscriptions'. It immediately adds the optional purge behavior and the RSSHub feedUrl constraint, making the tool's purpose unmistakable and distinct from sibling upsert/list operations.

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

Usage Guidelines4/5

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

It clearly frames when the tool applies (removing subscriptions) and gives an explicit operational rule: 'RSSHub subscriptions must be removed using their stored rsshub://... feedUrl'. It does not name sibling alternatives or give a when-not-to-use statement, 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.

set_consumption_statusC

Set consumed or unconsumed status for stored news within a UTC date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
endDateYes
categoryNo
feedUrlsNo
startDateYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden of disclosing behavioral traits. It only states the core action and date range, but does not mention side effects, idempotency, authorization requirements, or whether the operation is a bulk update that might affect a large number of records. This is a significant gap for a mutating tool.

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

Conciseness5/5

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

The description is a single clear sentence with no filler. The key action and scope are front-loaded, and every word contributes to the meaning. It is an appropriately sized and well-structured description.

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

Completeness2/5

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

Given the tool has 5 parameters, no output schema, and no annotations, the description is insufficiently complete. It does not explain how the optional filters work, what the result of the operation is, or any constraints or caveats. An agent would need to inspect the schema and still lack key behavioral and contextual information to invoke this correctly with confidence.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no meaningful parameter semantics. It mentions 'UTC date range' but does not elaborate on the format or relationship of startDate/endDate, nor does it clarify the optional 'category' and 'feedUrls' filters or the 'status' enum. The description fails to compensate for the schema's lack of descriptions.

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

Purpose4/5

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

The description uses a specific verb ('Set') and resource ('consumed or unconsumed status for stored news') and adds a date range scope. It is clear what the tool does, but it does not explicitly distinguish itself from the sibling 'consume_news' or other news-related tools, so it lacks the full sibling differentiation needed for a 5.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'consume_news' or 'fetch_news'. The description simply states the action without any context for selection, exclusions, or prerequisites. This is essentially no guidance beyond the implied use case.

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

sync_newsC

Fetch subscribed RSS feeds and update stored entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedUrlsNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full disclosure responsibility. It mentions fetching and updating, which implies network access and mutation of stored data, but it does not clarify whether it is idempotent, whether existing entries are overwritten, what happens if feeds are not subscribed, or whether there are rate limits or authentication requirements.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with an active verb and a clear object. It is efficient and avoids filler, though it is somewhat under-specified in terms of behavioral nuance.

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

Completeness2/5

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

For a tool with one optional parameter, no output schema, and no annotations, the description is too thin. It leaves unclear what feedUrls does, what action occurs when the parameter is absent, and what the return value or side effects are. An agent could call it without knowing key operational details.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the feedUrls parameter or how it interacts with the 'subscribed feeds' behavior. Though the parameter name and format are self-explanatory, the description adds no meaning about optionality, constraints, or what happens when feedUrls is omitted.

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

Purpose4/5

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

The description states an action (fetch) and its effect (update stored entries), clarifying the sync responsibility. It does not explicitly name or distinguish siblings, but the phrase 'update stored entries' separates it from fetch_news and preview_feed.

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

Usage Guidelines3/5

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

The implied usage is to refresh stored news from subscribed RSS feeds, but there is no explicit guidance about when to use this instead of fetch_news or how it relates to subscriptions. Context is present but no exclusions or alternatives are named.

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

upsert_subscriptionsA

Create or update RSS subscriptions and return canonical feedUrls. Known RSSHub instance URLs are stored as rsshub://....

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes

TDQS

A3.8/5.0
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 write behavior (create/update), the return value (canonical feedUrls), and a storage transformation rule (known RSSHub URLs stored as rsshub://...). It stops short of explaining failure modes or idempotency, but the core behavioral traits are present.

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

Conciseness5/5

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

Two sentences with no filler. The primary purpose is front-loaded, and the return/storage detail follows immediately in the second sentence.

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

Completeness3/5

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

For a one-parameter upsert tool, the description covers the essential operation and return, but the lack of parameter semantics and any guidance relative to siblings leaves meaningful gaps. It is minimally complete but not fully self-sufficient.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not elaborate on the 'items' array structure or the title/category fields beyond mentioning feedUrls. It adds operational meaning ('upsert' and canonicalization) but leaves required-field semantics and array constraints to the schema alone.

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

Purpose5/5

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

The description states a specific verb and resource: 'Create or update RSS subscriptions'. It also adds a distinguishing detail, the return of canonical feedUrls and the rsshub:// storage convention, which sets it apart from the sibling list/remove tools.

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

Usage Guidelines3/5

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

The intended usage is implied by 'Create or update RSS subscriptions' — use this when adding or modifying subscriptions. However, it does not explicitly mention when to prefer this over siblings like list_subscriptions or remove_subscriptions, nor does it provide exclusions.

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.

  1. 9 tool updatesv1.0.1
    • First observedconsume_news
    • First observedcount_news
    • First observedfetch_news
    • First observedlist_subscriptions
    • First observedpreview_feed
    • First observedremove_subscriptions
    • First observedset_consumption_status
    • First observedsync_news
    • First observedupsert_subscriptions

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation4/5

Each tool targets a distinct action: subscription management, previewing, syncing, reading, consuming, counting, and updating read state are clearly separated. The only slight overlap is between fetch_news and consume_news, but the read-state difference is explicitly described, so confusion is unlikely.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern: list_subscriptions, upsert_subscriptions, remove_subscriptions, preview_feed, sync_news, fetch_news, consume_news, count_news, set_consumption_status. The naming is uniform, predictable, and easy to navigate.

Tool Count5/5

Nine tools is well within the ideal range for an RSS news server. Each tool covers a distinct part of the subscription-to-consumption workflow without redundancy or unnecessary bloat.

Completeness4/5

The toolset covers the full lifecycle: subscription management, previewing, syncing, reading, consuming, counting, and modifying consumption status. Minor gaps exist around per-item granularity, such as individual entry retrieval or single-item read-state updates, but the date-range-based status tool covers most practical needs.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with RSS readers that support the FreshRSS API through natural language. Allows users to manage and query their RSS feeds and articles via LLM conversations.
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables intelligent RSS feed management with AI-powered semantic search, advanced filtering, and a comprehensive reading workflow. Supports OPML parsing, article organization with status tracking, and token-efficient browsing of large feed collections.
    15
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to discover, fetch, and manage RSS feeds from 1500+ websites via RSSHub, with subscription groups and content filtering.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to fetch categorized news headlines and full article text from a multi-topic RSS aggregator, with no API keys required.
    5
    ISC