opennews-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@opennews-mcpLatest crypto news"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Quick Install
First, get your API Token at https://6551.io/mcp.
Claude Code
claude mcp add opennews \
-e OPENNEWS_TOKEN=<your-token> \
-- uv --directory /path/to/opennews-mcp run opennews-mcpReplace
/path/to/opennews-mcpwith your local project path, and<your-token>with your API token.
OpenClaw
export OPENNEWS_TOKEN="<your-token>"
cp -r openclaw-skill/opennews ~/.openclaw/skills/Related MCP server: crypto-rss-mcp
Let AI Review and Install
Not sure if this MCP is safe? Send the following prompt to your AI assistant to review the source code before installing:
Copy the prompt below and paste it to your AI assistant (replace
<project-path>and<your-token>with actual values):
Please help me review and install the opennews-mcp MCP server. The project is at <project-path>.
Steps:
1. Review the security of the following files:
- src/opennews_mcp/api_client.py — Confirm it only connects to ai.6551.io, no data sent elsewhere
- src/opennews_mcp/config.py — Confirm token is only read from local config.json or env vars, not hardcoded or leaked
- src/opennews_mcp/tools/*.py — Confirm all tools only do API queries, no file writes, command execution, or dangerous operations
- pyproject.toml — Confirm dependencies are only mcp, httpx, websockets, no suspicious packages
2. Tell me your conclusion: Safe / Risky / Problematic, and the specific reasons
3. If safe, help me install (Token from https://6551.io/mcp):
claude mcp add opennews -e OPENNEWS_TOKEN=<your-token> -- uv --directory <project-path> run opennews-mcpWhat Can It Do?
After connecting, just tell your AI assistant:
You Say | It Does |
"Latest crypto news" | Get latest articles |
"Search SEC regulation news" | Full-text keyword search |
"BTC related news" | Filter by coin |
"Bloomberg articles" | Filter by source |
"On-chain events" | Filter by engine type (onchain) |
"Important news with AI score above 80" | High score filtering |
"Bullish signals" | Filter by trading signal (long) |
"Subscribe to real-time news" | WebSocket live updates |
Available Tools
Category | Tool | Description |
Discovery |
| Get all news source category tree |
| All available news source codes | |
Search |
| Latest articles |
| Keyword search | |
| By coin (BTC, ETH, SOL...) | |
| By engine type and source | |
| By type (news, listing, onchain, meme, market) | |
| Advanced search (multiple filters) | |
AI |
| Articles with score >= threshold |
| By signal: long / short / neutral | |
Real-time |
| WebSocket real-time collection |
Configuration
Get API Token
Get your API Token at https://6551.io/mcp.
Set environment variable:
# macOS / Linux
export OPENNEWS_TOKEN="<your-token>"
# Windows PowerShell
$env:OPENNEWS_TOKEN = "<your-token>"Variable | Required | Description |
| Yes | 6551 API Bearer Token (from https://6551.io/mcp) |
| No | Override REST API URL |
| No | Override WebSocket URL |
| No | Max results per request (default 100) |
Also supports config.json in project root (env vars take precedence):
{
"api_base_url": "https://ai.6551.io",
"wss_url": "wss://ai.6551.io/open/news_wss",
"api_token": "<your-token>",
"max_rows": 100
}Data Structure
Each article returns:
{
"id": "unique-article-id",
"text": "Title / Content",
"newsType": "Bloomberg",
"engineType": "news",
"link": "https://...",
"coins": [{ "symbol": "BTC", "market_type": "spot", "match": "title" }],
"aiRating": {
"score": 85,
"grade": "A",
"signal": "long",
"status": "done",
"summary": "Chinese summary",
"enSummary": "English summary"
},
"ts": 1708473600000
}AI Field | Description |
| 0-100 impact score |
|
|
|
|
In all configurations below, replace
/path/to/opennews-mcpwith your actual local project path, and<your-token>with your token from https://6551.io/mcp.
Claude Desktop
Edit config file (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}Cursor
~/.cursor/mcp.json or Settings > MCP Servers:
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}Cline
VS Code sidebar > Cline > MCP Servers > Configure, edit cline_mcp_settings.json:
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
},
"disabled": false,
"autoApprove": []
}
}
}Continue.dev
~/.continue/config.yaml:
mcpServers:
- name: opennews
command: uv
args:
- --directory
- /path/to/opennews-mcp
- run
- opennews-mcp
env:
OPENNEWS_TOKEN: <your-token>Cherry Studio
Settings > MCP Servers > Add > Type stdio: Command uv, Args --directory /path/to/opennews-mcp run opennews-mcp, Env OPENNEWS_TOKEN.
Zed Editor
~/.config/zed/settings.json:
{
"context_servers": {
"opennews": {
"command": {
"path": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}
}Any stdio MCP Client
OPENNEWS_TOKEN=<your-token> \
uv --directory /path/to/opennews-mcp run opennews-mcpCompatibility
Client | Installation | Status |
Claude Code |
| One-click |
OpenClaw | Copy Skill directory | One-click |
Claude Desktop | JSON config | Supported |
Cursor | JSON config | Supported |
Windsurf | JSON config | Supported |
Cline | JSON config | Supported |
Continue.dev | YAML / JSON | Supported |
Cherry Studio | GUI | Supported |
Zed | JSON config | Supported |
Related Projects
twitter-mcp - Twitter/X data MCP server
Development
cd /path/to/opennews-mcp
uv sync
uv run opennews-mcp# MCP Inspector test
npx @modelcontextprotocol/inspector uv --directory /path/to/opennews-mcp run opennews-mcpProject Structure
├── README.md
├── openclaw-skill/opennews/ # OpenClaw Skill
├── knowledge/guide.md # Embedded knowledge
├── pyproject.toml
├── config.json
└── src/opennews_mcp/
├── server.py # Entry point
├── app.py # FastMCP instance
├── config.py # Config loading
├── api_client.py # HTTP + WebSocket
└── tools/ # ToolsLicense
MIT
Available Tools
11 toolsget_high_score_newsA
Get highly-rated news articles (by AI score), sorted by score descending.
Args:
min_score: Minimum score threshold (default 70).
limit: Maximum results to return (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| min_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It clearly discloses the sorting behavior (score descending), the default threshold, and the maximum result limit. It does not describe the response format or mention threshold inclusivity, but for a read-only retrieval tool the key behavioral traits are sufficiently covered.
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 with the tool's purpose, followed by a clean Args list. Every sentence adds useful information, and there is no redundant or filler content.
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 simple tool with two optional parameters and no output schema, the description is largely complete: it defines what the tool returns, the ordering, and the parameter semantics. It could be more complete by describing the expected response shape or article fields, but that is not strictly necessary for correct invocation.
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 description fully compensates by explaining both parameters: min_score is a score threshold and limit is the maximum result count with an explicit max of 100. This adds meaningful semantic meaning beyond the schema's bare type and default values.
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?
The description states a specific action ('Get'), a resource ('news articles'), and a unique differentiator ('by AI score, sorted by score descending'). This makes it easy to distinguish from sibling tools like get_latest_news, search_news, and get_news_by_source, even though no sibling is explicitly named.
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?
The intended usage is implied: use this tool when you want highly-rated news filtered by a minimum AI score. However, the description gives no explicit guidance about when to prefer this tool over alternatives such as search_news or search_news_advanced, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_newsA
Get the most recent crypto news articles, newest first.
Returns news with title text, source, link, related coins, AI rating, and tags.
Args:
limit: Maximum number of articles to return (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the return fields and ordering behavior, which is useful. It does not mention anything about authentication, rate limits, or potential side effects, but for a simple read-only fetch this is a reasonable level of transparency.
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 succinct and well-organized: a one-sentence purpose, a return-format summary, and a short Args section. Every sentence adds value, and there is no redundant or filler content.
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 fetch with no output schema, the description provides enough context: what is returned, in what order, and how to control the result count. It could be slightly richer by describing response shape or coin formatting, but the core information an agent needs is present.
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%, but the description fully explains the one parameter: limit as the maximum number of articles, with default 10 and max 100. It adds the max 100 constraint not present in the input schema, successfully compensating for the schema's lack of 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?
The description states a specific action ('Get') and resource ('most recent crypto news articles') plus ordering ('newest first'), which clearly conveys what the tool does. It does not explicitly differentiate itself from siblings like get_high_score_news or search_news, but the unfiltered recency framing distinguishes it implicitly.
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?
The description implies when to use the tool: when you want the latest crypto news. However, it provides no explicit guidance about alternatives or exclusions, such as 'use search_news for filtering' or 'use get_high_score_news for rated content.' This leaves selection open to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_by_engineA
Get news articles filtered by engine type.
Engine types: "news", "listing", "onchain", "meme", "market".
Args:
engine_type: The engine type code.
limit: Maximum results (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| engine_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It discloses the allowed engine_type codes and the max limit beyond what the schema provides, but says nothing about return format, ordering, pagination, errors, or what each engine type actually represents. Adequate for a simple read operation, but thin.
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 well-structured, front-loading the core purpose and following with a clear Args list. Every sentence contributes either the operation, allowed values, or parameter behavior, 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 two-parameter read tool, the core invocation details are present, including required engine_type and optional limit with defaults. However, with no output schema and no annotations, the description does not mention the result shape, invalid-value behavior, or how this tool fits among the many sibling news tools, leaving meaningful gaps.
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 compensate. It adds meaning by defining engine_type as the engine type code with five allowed values, and it adds a maximum of 100 for limit that the schema lacks. This is valuable beyond the structured schema, though it does not explain the semantic differences between engine types.
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?
The description states 'Get news articles filtered by engine type' — a specific verb and resource — and enumerates the five engine type values. It clearly differentiates this tool from siblings like get_news_by_source or search_news by naming the filtering dimension, though it does not explicitly name 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?
The description implies the tool is for engine-type filtering by providing the valid engine values and the default/max limit. It does not state when to prefer this tool over alternatives or when not to use it, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_by_signalA
Get news filtered by trading signal type.
Args:
signal: The signal type: "long" (bullish), "short" (bearish), or "neutral".
limit: Maximum results (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| signal | Yes |
TDQS
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 correctly conveys a read-only retrieval operation ('Get news') and documents the signal types and limit bounds, but it does not disclose return value shape, sorting, pagination, or any error/access behavior. This is adequate for a simple read tool but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient and front-loaded with the core purpose in the first sentence, followed by a compact Args section. Every sentence adds necessary information, with no filler or repetition of the tool name.
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 simple two-parameter read tool, the description covers all input semantics and gives practical limits. There is no output schema, so a short note about the returned news shape or ordering would improve completeness, but the current description is still sufficient for correct invocation in most cases.
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 input schema provides only types, a title, and a default, with 0% schema description coverage. The description fully compensates by explaining that 'signal' accepts 'long' (bullish), 'short' (bearish), or 'neutral', and that 'limit' controls maximum results with default 10 and max 100.
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?
The description uses a specific verb and resource ('Get news') and identifies the unique filtering dimension ('by trading signal type'), which clearly distinguishes this tool from siblings like get_news_by_source or get_news_by_engine. The signal values and limit are also specified, leaving no ambiguity about what the tool does.
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?
The phrase 'filtered by trading signal type' implies the tool is appropriate when news needs to be retrieved according to a long/short/neutral signal, but it never explicitly states when to prefer this tool over alternatives or when not to use it. Usage guidance is therefore 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.
get_news_by_sourceA
Get news articles from a specific source.
Use get_news_sources first to see available engine types and news type codes.
Args:
engine_type: The engine type (e.g. "news", "listing", "onchain", "meme", "market").
news_type: The news source code (e.g. "Bloomberg", "Reuters", "Coindesk").
limit: Maximum results (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| news_type | Yes | ||
| engine_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the default and maximum for 'limit' and indicates that engine_type and news_type are required codes. However, it does not describe the return format, pagination behavior, error handling for invalid codes, or ordering of results. This is adequate for a simple getter but leaves some behavioral gaps.
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 efficiently structured: a one-line summary, a short usage prerequisite, then a clean Args list. Every sentence adds value and the essential scoping information is front-loaded. No filler or redundancy.
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 tool with no annotations, no output schema, and 0% schema description coverage, the description covers all required parameters, the prerequisite call, and the limit constraint. It lacks return-value details, but given the simple list-like nature of the tool and the presence of many sibling search tools, it is nearly complete. The missing output shape is the main gap.
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 fully compensates by explaining every parameter with concrete examples and constraints. It clarifies that engine_type is something like 'news' or 'meme', news_type is a source code like 'Bloomberg', and limit has a default and maximum. This goes well beyond the bare schema types.
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?
The description clearly states the tool's action with 'Get news articles from a specific source' and identifies the key parameters that determine the source. It is not a tautology and the verb-resource pairing ('get news') is specific enough to distinguish from search-oriented siblings, though it doesn't explicitly name a contrasting sibling.
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?
The description explicitly instructs the agent to call 'get_news_sources first to see available engine types and news type codes', providing a clear prerequisite and routing hint. It doesn't discuss when to prefer other news-fetching siblings like search_news or get_latest_news, but the 'use X first' guidance is strong and useful. A fully explicit when-not-to-use list would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_sourcesA
Get all available news source categories and their metadata.
Returns a tree structure with engine types (news, listing, onchain, meme, market) and their sub-categories (Bloomberg, Reuters, Binance, etc.).
Use this first to understand what news sources are available before searching.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the return shape (a tree structure of engine types and sub-categories). It does not state whether the call is read-only or describe any side effects, safety, or limits, leaving some behavioral ambiguity.
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 compact sentences: purpose, return structure, and workflow advice. Every sentence adds value and the key claims are 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?
For a zero-parameter metadata-discovery tool, the description explains what is returned and why it should be called first. It lacks a detailed schema of the tree, but it provides enough context for correct invocation.
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 no parameters, so the schema fully covers parameter semantics; the description doesn't need to add parameter meaning. Baseline for a zero-parameter tool is 4.
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?
The description clearly identifies the resource: all available news source categories plus metadata, with engine types and examples (Bloomberg, Reuters). It is unambiguous versus the search/latest-news siblings, though it doesn't explicitly distinguish itself from the similarly named list_news_types.
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?
The description states when to call the tool: 'Use this first... before searching.' This gives an explicit workflow context but doesn't name alternative tools or exclusion conditions, so it's clear but not fully comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_news_typesA
List all available news type codes for filtering.
Returns a flat list of news source codes that can be used with
the newsType parameter in search_news.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the return shape ('flat list'), the content ('codes'), and where the values are consumed ('newsType parameter in search_news'), implying a read-only enumeration. It doesn't discuss errors, auth, or empty results, but those are low-risk for a parameterless lookup.
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?
Two short sentences with the primary purpose front-loaded and the usage detail immediately after. There is no filler, repetition, or unnecessary schema 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?
For a zero-parameter, no-output-schema tool, the description covers the essentials: what is listed and how the values are used. The only slight gap is the inconsistent 'type codes' vs 'source codes' wording, and the lack of an explicit read-only statement, but these are minor given the tool's simplicity.
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 input schema has no properties and the tool takes zero parameters, so there is no parameter semantics for the description to clarify. Per the baseline for zero-parameter tools, a 4 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 concrete action: 'List all available news type codes for filtering.' It clearly identifies the resource and purpose. However, it doesn't explicitly distinguish itself from sibling get_news_sources and uses 'news source codes' in the second sentence, which slightly blurs the resource type.
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?
The description gives clear usage context: the returned codes 'can be used with the newsType parameter in search_news.' This tells an agent when this tool is relevant. It does not mention when not to use it or name alternative tools, 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.
search_newsA
Search crypto news by keyword in text content.
Args:
keyword: Search term (e.g. "bitcoin", "SEC", "ETF").
limit: Maximum results (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clarifies that the search targets text content and sets a result limit (default 10, max 100), but it does not describe the return format, sorting, or any other runtime behavior. The word 'search' implies a read-only action, but this is not explicitly stated.
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 with the purpose sentence, followed by a clear Args section. Every sentence provides useful information, and the parameter documentation is structured without redundancy with the schema, aside from repeating the parameter names which is necessary given zero schema descriptions.
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 simple two-parameter search tool, the description covers the invocation essentials: what it searches and how to set the parameters. However, absent an output schema and annotations, it does not indicate what the result objects look like or how this search differs from search_news_by_coin/search_news_advanced. An agent could invoke it correctly but would be uncertain about the return shape and edge cases.
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 fully compensates by explaining both parameters. It gives concrete examples for keyword ("bitcoin", "SEC", "ETF") and adds a max constraint (100) not present in the schema, which only lists a default of 10. This is exactly the addition needed beyond the structured schema.
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?
The description states a specific verb ('Search'), a specific resource ('crypto news'), and the exact scope ('by keyword in text content'). This strongly differentiates it from siblings like search_news_by_coin (which searches by coin) and get_latest_news (which returns recent articles). No ambiguity remains about the core function.
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?
The description provides no guidance about when to use this tool versus alternatives such as search_news_advanced or search_news_by_coin. There are no exclusions, prerequisites, or recommended contexts. The agent must infer usage solely from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_news_advancedA
Advanced news search with multiple filters.
Args:
coins: Comma-separated coin symbols (e.g. "BTC,ETH").
keyword: Optional search keyword.
engine_types: Engine type filter in format "type1:cat1,cat2;type2:cat3" (e.g. "news:Bloomberg,Reuters;listing:").
has_coin: If true, only return news that have associated coins.
limit: Maximum results (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| coins | No | ||
| limit | No | ||
| keyword | No | ||
| has_coin | No | ||
| engine_types | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, but it mostly re-describes parameter formats rather than behavior. The only behavioral disclosures are has_coin's filtering semantics and the limit cap of 100; return shape, ordering, pagination, and error behavior are not mentioned.
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 front-loaded with a one-line summary and followed by a compact, readable Args list. Each line documents one parameter without fluff or repetition, making it appropriately sized for a five-parameter tool.
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 all parameters are well documented, the tool has no output schema and no annotations, so the description should also clarify what the tool returns and when to prefer it over sibling search tools. Those elements are missing, leaving the overall context incomplete for an agent deciding whether and how to invoke 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 description coverage is 0%, but the description compensates thoroughly: every one of the five parameters is explained with formats or examples, including 'BTC,ETH' for coins and 'news:Bloomberg,Reuters;listing:' for engine_types, plus the max-results cap. This meaningfully exceeds what the bare schema provides.
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?
The description opens with 'Advanced news search with multiple filters' and lists the filtering parameters, making the verb and resource clear: search news with coin, keyword, engine, and coin-presence filters. It does not explicitly contrast itself with sibling tools like search_news or search_news_by_coin, so sibling differentiation is absent.
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?
The word 'Advanced' and the enumeration of 'multiple filters' imply this tool is for filtered or complex news queries. However, there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as search_news or get_latest_news, leaving selection between siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_news_by_coinB
Search news related to a specific cryptocurrency coin/token.
Args:
coin: Coin symbol or name (e.g. "BTC", "ETH", "SOL", "TRUMP").
limit: Maximum results (default 10, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions the default and maximum limit, which is mildly useful, but does not disclose ordering, pagination, response format, rate limits, or any side effects. The read-only nature is only implied by the word 'search'.
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 well-structured: a one-sentence purpose statement followed by a clear Args block. Every sentence and detail earns its place with no redundancy or 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?
The tool is simple, but there is no output schema, no annotations, and no guidance about sibling tool selection. The description leaves out expected return values and behavioral context, which an agent would need to reliably choose and trust this tool among many similar news-related alternatives.
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?
With 0% schema description coverage, the description fully compensates by explaining both parameters. It gives concrete examples for coin ('BTC', 'ETH', 'SOL', 'TRUMP') and specifies the default and maximum for limit, adding meaning beyond the raw schema types.
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?
The description clearly states the action ('Search news') and the specific resource ('related to a specific cryptocurrency coin/token'), making the tool's purpose immediately understandable. It is clear enough to distinguish from generic search tools, though it does not explicitly name or contrast with sibling tools like search_news or search_news_advanced.
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?
The description provides parameter usage instructions but does not say when to use this tool versus alternatives. There is no mention of when to choose search_news_by_coin over search_news or search_news_advanced, and no exclusions or context for preference are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribe_latest_newsA
Subscribe to real-time news updates via WebSocket.
Connects to the WebSocket feed, subscribes to news with optional filters,
and collects incoming messages for the specified duration.
Args:
wait_seconds: How long to listen for news (default 10, max 30 seconds).
max_items: Maximum news items to collect (default 5, max 20).
coins: Comma-separated coin symbols to filter (e.g. "BTC,ETH").
engine_types: Engine type filter in format "type1:cat1,cat2;type2:cat3".
has_coin: If true, only receive news that have associated coins.
| Name | Required | Description | Default |
|---|---|---|---|
| coins | No | ||
| has_coin | No | ||
| max_items | No | ||
| engine_types | No | ||
| wait_seconds | No |
TDQS
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 honestly explains that the tool opens a WebSocket connection, subscribes with optional filters, and collects messages for a bounded duration, including time and item limits. It does not mention return format or connection cleanup, but the core behavior is transparent.
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 efficient and well-structured: a one-sentence summary followed by a focused Args list. It front-loads the core purpose and includes only operational details that matter for invocation, such as max wait time and max item count.
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 WebSocket subscription tool with five optional parameters and no output schema, the description covers connection behavior, filtering options, duration, and limits. It does not explicitly state what the return value looks like after messages are collected, which would make invocation fully unambiguous, but the provided details are largely sufficient.
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 explain parameters. It does this thoroughly: every parameter is listed with meaning, defaults, and maximum bounds, plus concrete examples for coins and engine_types. This fully compensates for the schema's lack of property descriptions.
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?
The description clearly states the specific action: 'Subscribe to real-time news updates via WebSocket.' This identifies both the verb (subscribe) and resource (real-time news feed), and distinguishes it from one-shot retrieval siblings like get_latest_news and search_news.
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?
The description clearly conveys a real-time streaming use case: connects to a WebSocket feed and collects incoming messages for a duration. It does not explicitly name alternatives or say when not to use it, but the context strongly implies this is for live updates rather than one-time queries.
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.
11 tool updates
v0.1.0- First observed
get_high_score_news - First observed
get_latest_news - First observed
get_news_by_engine - First observed
get_news_by_signal - First observed
get_news_by_source - First observed
get_news_sources - First observed
list_news_types - First observed
search_news - First observed
search_news_advanced - First observed
search_news_by_coin - First observed
subscribe_latest_news
TDQS
Scored across 11 tools
Most tools have distinct retrieval intents—search by keyword, coin, source, engine, score, signal, or real-time—so an agent can usually pick correctly. The main overlap is between get_news_sources and list_news_types, and between the basic search tools and search_news_advanced, which can cause occasional misselection.
Tool names mostly follow a snake_case verb_noun pattern (get_news_by_*, search_news_*, list_news_types). Minor deviations exist between search_ vs get_ prefixes for similar retrieval operations, and subscribe_latest_news places the modifier before the object, but the overall pattern remains readable.
With 11 tools, the server is well within the ideal range for a specialized news API. The count feels appropriate: discovery, search, filtering, and real-time subscription each have dedicated tools without being bloated.
The toolset covers the full news workflow: discovering sources, listing filter codes, retrieving latest news, searching by multiple dimensions, filtering by rating/signal, and subscribing via WebSocket. No critical dead ends are apparent for the stated crypto-news domain.
Maintenance
Related MCP Connectors
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
Real-time curated crypto news for AI agents with sentiment, recaps, and search.
Crypto market intelligence, token rug-checks, and wallet verification in one MCP server.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides real-time cryptocurrency news sourced from NewsData for AI agents.15MIT
- AlicenseAqualityDmaintenanceAn MCP server that aggregates real-time cryptocurrency news from multiple RSS feeds.217MIT
- AlicenseAqualityDmaintenanceA cryptocurrency news aggregation server providing AI-powered sentiment ratings, trading signals, and real-time market updates. It allows users to search news by coin, source, or engine type and filter results based on AI impact scores and bullish/bearish signals.112,167MIT
- AlicenseAqualityBmaintenanceMCP server for Gloria AI curated crypto news. Provides curated, real-time cryptocurrency news digests, recaps, and search.71MIT