sellthenews-mcp
Click on "Install 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., "@sellthenews-mcpget the options summary and current WSB sentiment for NVDA"
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.
sellthenews-mcp
A read-only MCP (Model Context Protocol) server that wraps sellthenews.org API endpoints, making financial news and options data available as tools for LLMs like Claude.
Architecture
sellthenews.org API → Adapters → Services → MCP Tools & ResourcesFour layers, each with one job:
Layer | What it does | Files |
Domain | Defines TypeScript types for all data shapes |
|
Adapters | Fetch raw JSON from upstream APIs (no processing) |
|
Services | Normalize raw data into clean domain objects |
|
MCP | Expose tools and resources to LLM clients |
|
Data flows left to right: the MCP layer calls services, services call adapters, adapters call the HTTP client.
Related MCP server: OpenInsider MCP
Upstream APIs
Endpoint | Description |
| Latest news feed with pinned stories |
| Wall Street Bets daily analysis snapshot |
| Keyword-based news search |
| Options chain, GEX, and greek exposure |
MCP Tools
Tool | Description | Key inputs |
| Latest news stories |
|
| WSB daily analysis |
|
| Search news by keyword |
|
| Full options chain for a ticker |
|
| Concise options exposure summary |
|
MCP Resources
URI | Description |
| Latest news feed (ambient context) |
| Latest WSB snapshot (ambient context) |
Setup
npm install
npm run buildRun Locally
npm startThe server runs over stdio, so it is meant to be launched by an MCP client such as Claude Desktop or an MCP inspector rather than opened in a browser.
For private single-user compatibility testing, the HTTP client can also read SELLTHENEWS_USER_AGENT, SELLTHENEWS_COOKIE, SELLTHENEWS_ACCEPT_LANGUAGE, and SELLTHENEWS_REFERER from the environment and forward them as request headers when present.
Usage with Claude Desktop
Add this to your Claude Desktop MCP config file. On macOS it's at ~/Library/Application Support/Claude/claude_desktop_config.json, on Windows it's at %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"sellthenews": {
"command": "node",
"args": ["/REPLACE/WITH/YOUR/ACTUAL/PATH/sellthenews_MCP/dist/index.js"]
}
}
}Important: Replace the path above with the actual absolute path to
dist/index.json your machine. For example, on Windows it might beC:\\Users\\yourname\\Desktop\\sellthenews_MCP\\dist\\index.js.
Project Structure
src/
domain/
shared.types.ts # Common types (SourceInfo, TickerMention, etc.)
news.types.ts # News domain: raw API types + clean domain types
options.types.ts # Options domain: raw API types + clean domain types
infra/
http-client.ts # HTTP client wrapping fetch()
adapters/
news.adapters.ts # 3 news adapters (live/recent, wsb, search)
options.adapters.ts # 1 options adapter (options/chain)
services/
news.service.ts # News normalization logic
options.service.ts # Options normalization logic
mcp/
news.tools.ts # News MCP tools + resources + Zod schemas
options.tools.ts # Options MCP tools + Zod schemas
index.ts # Entry point: wires layers, starts serverCurrent Status
Stage 2A is complete. The repository now performs real upstream GET requests, normalizes raw responses into domain objects, and exposes live MCP tools/resources that return consistent JSON text.
Implemented now:
HttpClient.get()with URL building, timeout handling, JSON parsing, and clearer error messagesReal adapters for all four identified sellthenews endpoints
Service-layer normalization for news feeds, WSB snapshots, options chains, and options summaries
Live MCP tool and resource handlers wired to the service layer
Optional env-driven compatibility headers for private single-user testing when plain server-side requests hit upstream protection
Still pending:
Automated tests for adapters, services, and MCP smoke coverage
Better operational hardening if upstream failures or Cloudflare issues show up in practice
Stage 3 concerns such as caching, rate limiting, and production logging
Quick Smoke Check
Run
npm run buildRun
npm startConnect the server from Claude Desktop or an MCP inspector
Call
get_recent_newswith{ "limit": 2 }orget_options_summarywith{ "ticker": "MU" }
If upstream access works, the response should be pretty-printed JSON instead of placeholder text.
If upstream blocks plain server-side requests, retry your local run with SELLTHENEWS_USER_AGENT, SELLTHENEWS_COOKIE, SELLTHENEWS_ACCEPT_LANGUAGE, and SELLTHENEWS_REFERER set in the environment as needed.
Available Tools
5 toolsget_options_chainC
Get full options chain data for a ticker, including GEX, OI, and volume by strike
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol, e.g. 'MU', 'AAPL', 'TSLA' | |
| expiration | No | Expiration date filter, e.g. '2026-04-17' | |
| greeks | No | Greek to analyze, e.g. 'gamma' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions data retrieval but fails to disclose behavioral traits such as rate limits, authentication needs, data freshness, or response format. For a data-fetching tool with no annotations, this leaves significant gaps in understanding its operation.
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 a single, efficient sentence that front-loads the core purpose and key data elements. Every word earns its place with no redundancy or unnecessary details, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a data retrieval tool with three parameters, the description is incomplete. It lacks information on return values, error handling, or operational constraints, leaving the agent with insufficient context to use the tool effectively beyond basic parameter input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (ticker, expiration, greeks). The description adds minimal value beyond the schema by implying the data includes GEX, OI, and volume by strike, but doesn't elaborate on parameter interactions or defaults. Baseline 3 is appropriate as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get full options chain data') and resource ('for a ticker'), with specific data elements mentioned (GEX, OI, volume by strike). It distinguishes from sibling tools like 'get_options_summary' by emphasizing 'full' data, though not explicitly contrasting them.
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?
No guidance is provided on when to use this tool versus alternatives like 'get_options_summary' or other siblings. The description implies it's for comprehensive options data but lacks explicit context, prerequisites, or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_summaryB
Get a concise options exposure summary for a ticker (no per-strike breakdown)
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol, e.g. 'MU', 'AAPL', 'TSLA' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the output is 'concise' and excludes 'per-strike breakdown', which adds some behavioral context. However, it doesn't disclose other important traits like whether this is a read-only operation, potential rate limits, authentication needs, or what format the summary returns. For a tool with no annotations, this leaves significant gaps in behavioral understanding.
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 a single, efficient sentence that front-loads the core purpose ('Get a concise options exposure summary for a ticker') and adds a clarifying constraint ('no per-strike breakdown'). There is zero wasted verbiage, and every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 1 parameter with full schema coverage and no output schema, the description provides adequate context for a simple lookup tool. It clarifies the scope ('concise summary', 'no per-strike breakdown'), which helps set expectations. However, with no annotations and no output schema, it could benefit from more details on behavioral aspects or return format to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'ticker' well-documented in the schema as 'Stock ticker symbol, e.g. 'MU', 'AAPL', 'TSLA''. The description doesn't add any additional parameter semantics beyond what's in the schema. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to.
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 purpose: 'Get a concise options exposure summary for a ticker'. It specifies the verb ('Get'), resource ('options exposure summary'), and scope ('for a ticker'). However, it doesn't explicitly differentiate from its sibling 'get_options_chain' beyond mentioning 'no per-strike breakdown', which is helpful but not a full distinction.
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 this tool by stating 'no per-strike breakdown', suggesting it's for a high-level summary rather than detailed strike data. However, it doesn't explicitly name alternatives like 'get_options_chain' or provide clear when-not-to-use guidance. The context is somewhat clear but lacks explicit sibling comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_newsB
Fetch the latest news stories from sellthenews.org, including editorially pinned stories
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of stories to return (default: 15) | |
| offset | No | Number of stories to skip for pagination | |
| lang | No | Language code, e.g. 'en' or 'zh' | |
| sources | No | Source filter as a comma-separated string or string array | |
| marketOnly | No | Set to true to show only market-related news |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions fetching 'latest news stories' and 'editorially pinned stories', but doesn't cover important aspects like rate limits, authentication needs, pagination behavior beyond the offset parameter, response format, or error handling. For a read operation with 5 parameters, this leaves significant 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 a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a tool with good schema documentation and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 5 documented parameters but no output schema and no annotations, the description is minimally adequate. It states what the tool does but lacks important context about response format, error conditions, and behavioral constraints that would help an agent use it effectively. The 100% schema coverage helps, but the overall context remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema descriptions. The baseline of 3 is appropriate when the schema does the heavy lifting, though the description could have provided context about how parameters interact.
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 ('fetch') and resource ('latest news stories from sellthenews.org'), and specifies inclusion of 'editorially pinned stories' which adds useful detail. However, it doesn't explicitly differentiate from sibling tool 'search_news' beyond the 'latest' vs 'search' distinction, which is somewhat implied but not stated.
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 on when to use this tool versus alternatives like 'search_news'. It doesn't mention prerequisites, constraints, or comparative use cases, leaving the agent to infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wsb_snapshotB
Get the latest Wall Street Bets daily analysis snapshot
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language code, e.g. 'en' or 'zh' |
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 states the tool retrieves the 'latest' snapshot, implying it's a read-only operation, but doesn't specify if it requires authentication, has rate limits, returns structured data, or details the freshness of 'latest'. This leaves significant behavioral gaps for a tool that likely interacts with external data.
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 a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly, which is ideal for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (retrieving external data), lack of annotations, and no output schema, the description is minimally adequate. It clarifies the resource but misses behavioral details like response format or constraints. With 100% schema coverage for one parameter, it's not incomplete, but could be more informative for agent usage.
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 description adds no parameter-specific information beyond the input schema, which has 100% coverage for the single parameter 'lang'. Since there's only one parameter and the schema fully describes it, the baseline is high. The description doesn't compensate or add value, but with minimal parameters and full schema coverage, this is acceptable.
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 purpose with a specific verb ('Get') and resource ('Wall Street Bets daily analysis snapshot'), making it immediately understandable. However, it doesn't differentiate from sibling tools like 'get_recent_news' or 'search_news' that might also provide Wall Street Bets content, leaving some ambiguity about uniqueness.
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 on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or comparisons to sibling tools like 'get_recent_news' or 'search_news', which could also retrieve related content, leaving the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsC
Search news articles by keyword across multiple sources
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword to search for in news articles | |
| limit | No | Max number of results (default: 15) | |
| offset | No | Number of results to skip for pagination | |
| lang | No | Language code, e.g. 'en' or 'zh' | |
| sources | No | Source filter as a comma-separated string or string array | |
| sort | No | Sort order, e.g. 'time' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'search' but doesn't describe what the search returns (e.g., article metadata, full text, snippets), whether there are rate limits, authentication requirements, or how results are structured. For a search tool with 6 parameters and no annotations, this leaves significant 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 a single, efficient sentence that communicates the core functionality without waste. It's appropriately sized for a search tool and front-loads the essential information. Every word earns its place in conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, search functionality) and lack of both annotations and output schema, the description is insufficiently complete. It doesn't explain what the search returns, how results are formatted, or any behavioral constraints. For a search tool with multiple filtering options and no structured output documentation, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
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 purpose: 'Search news articles by keyword across multiple sources' - a specific verb ('search') and resource ('news articles') with scope ('across multiple sources'). It distinguishes from sibling tools like 'get_recent_news' by emphasizing keyword search rather than recency. However, it doesn't explicitly contrast with all siblings, preventing a perfect score.
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 on when to use this tool versus alternatives like 'get_recent_news' or other siblings. It doesn't mention prerequisites, constraints, or comparative contexts. The agent must infer usage solely from the tool name and description without explicit direction.
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. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
get_options_chain - First observed
get_options_summary - First observed
get_recent_news - First observed
get_wsb_snapshot - First observed
search_news
TDQS
Most tools have distinct purposes: options chain vs. summary, recent news vs. search, and WSB snapshot. However, 'get_recent_news' and 'search_news' could overlap if an agent wants recent news on a specific topic, as both handle news retrieval but with different approaches (time-based vs. keyword-based).
All tools follow a consistent 'verb_noun' pattern with 'get_' or 'search_' prefixes, using snake_case uniformly. This predictable naming makes it easy for agents to understand and select tools without confusion.
With 5 tools, this server is well-scoped for its financial/news domain. Each tool serves a clear, non-redundant function, covering options data, news retrieval, and WSB analysis, which is appropriate for a focused set of operations.
The toolset covers key areas like options analysis and news retrieval effectively, with no obvious dead ends. A minor gap is the lack of historical data tools (e.g., for options or news trends), but agents can still perform core tasks with the provided tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Octagon MCP server provides specialized AI-powered financial research and analysis by integrating with the Octagon Market Intelligence API. It enables users to analyze public market data (SEC filings, earnings transcripts, financial metrics, and stock data for 8000+ companies), private market data (3M+ companies, 500k+ funding rounds, 2M+ M&A/IPO transactions), and conduct deep research including web scraping capabilities. The server also features autonomous research agents that search hundreds of sources and return fully cited reports in approximately one minute.
Read-only MCP server for Robinhood Chain token discovery, research, and due diligence via GMGN.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceA read-only MCP server that provides access to Charles Schwab account data and market information, including portfolio positions, real-time quotes, options chains, price history, and account balances through AI assistants.9MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that exposes 16 free investment-research signals (insider trades, SEC filings, short data, and live quotes) to any MCP-compatible LLM.3698MIT
- AlicenseAqualityCmaintenanceComprehensive MCP server for real-time stock, cryptocurrency, options, and fundamental analysis, including SEC filings and insider trading data.2633MIT

siftingio-mcpofficial
AlicenseAqualityCmaintenanceMCP server that provides access to SiftingIO market data, including live prices, SEC filings, OHLCV bars, 13F holdings, market status, and economic calendar tools for AI assistants.36431MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/swl007007/sellthenews_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server