bharatnet
Provides search across Hacker News using Algolia's API.
Fetches news articles from Ars Technica via RSS feed.
Reads and searches Discourse forums, with default support for ValuePickr.
Reads public Facebook posts via OpenCLI integration.
Integrates with GitHub to read issues, pull requests, and search repositories, code, issues, and PRs.
Reads Instagram content via OpenCLI integration.
Reads Reddit posts and comments via OpenCLI integration.
Fetches entries from any RSS feed.
Fetches news articles from TechCrunch via RSS feed.
Fetches news articles from The Guardian via RSS feed.
Retrieves YouTube video metadata and transcripts via yt-dlp.
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., "@bharatnetwhat are the hot topics on Hacker 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.
agentknows
Typed Python SDK + MCP server for internet access across Western + Indian platforms. Built on Agent-Reach's capability layer.
Agent-Reach is a capability layer: it installs, health-checks, and routes the
best current backend per platform (Jina Reader, yt-dlp, gh, Exa, twitter-cli,
OpenCLI, ...). By design it has no programmatic API — it expects an agent
with shell access reading SKILL.md. agentknows fills that gap and retargets the
platform set at the English-speaking + Indian internet:
Agent-Reach gives you | agentknows adds |
Installer + doctor + backend routing | One typed facade: |
Per-platform CLIs, each with its own output format | One |
Shell-only usage | MCP server — Claude Desktop, Cursor, any MCP client, no shell needed |
Fix prescriptions inside doctor text | Machine-readable errors: every failure carries a runnable |
Chinese-platform focus (xiaohongshu, bilibili...) | Indian channels: NSE/BSE stocks, ValuePickr, Indian news pack |
— | Graceful degradation: missing tool → Jina Reader fallback + setup hint |
Install
uv venv && uv pip install -e .
# optional upstream tools: gh (GitHub), mcporter+exa (web search), twitter-cli, OpenCLI
# `agentknows doctor` tells you exactly what's missing and how to fix it.Related MCP server: supragents-mcp
SDK
from agentknows import Reach
reach = Reach()
# read anything
reach.read("https://www.youtube.com/watch?v=...") # metadata + transcript
reach.read("https://github.com/owner/repo/issues/1") # issue + comments via gh
reach.read("https://news.ycombinator.com/item?id=1") # story + comment tree
reach.read("https://forum.valuepickr.com/t/x/3872") # forum topic + posts
reach.read("https://any-blog.com/post") # Markdown via Jina Reader
reach.read("RELIANCE", platform="stocks") # NSE quote (auto .NS/.BO suffix)
# search
reach.search("llm eval frameworks") # Exa semantic web search
reach.search("react hooks", platform="github", kind="code")
reach.search("smallcap IT", platform="discourse") # ValuePickr
reach.search("TCS", platform="stocks") # symbol lookup
# trending
reach.hot("hackernews") # HN front page
reach.hot("news", region="india") # ET/Mint/Hindu/TOI/Moneycontrol
reach.hot("discourse", period="weekly") # top ValuePickr threads
# cross-platform research: one query → parallel fan-out → merged bundle
reach.research("UPI transaction limits", region="india")
reach.research("vector db pricing", report=True) # + Claude-written synthesis
reach.doctor() # structured health reportEvery call returns a ReachResult:
ReachResult(ok=True, platform="stocks", backend="yfinance", kind="document",
content="# Reliance Industries...", meta={"price": 1275.9, "currency": "INR", ...})Failures raise ReachError subclasses (SetupRequired, UpstreamFailure,
UnsupportedOperation) whose .fix is a runnable prescription.
CLI
agentknows read https://news.ycombinator.com/item?id=39000000
agentknows read RELIANCE -p stocks
agentknows search "vector databases" -n 5
agentknows search "Tata Motors" -p discourse
agentknows hot news --region india
agentknows hot hackernews
agentknows research "ONDC adoption" --region india # merged research bundle
agentknows research "rust web frameworks" --report # + Claude synthesis (needs key)
agentknows doctor
agentknows read <url> --json # machine outputresearch fans one query out in parallel across web (Exa), Hacker News, news,
YouTube, ValuePickr, and Twitter/Reddit when configured, and merges everything
into one Markdown bundle with per-source coverage notes. --report adds a
Claude-written synthesis (install agentknows[research], set ANTHROPIC_API_KEY
or ant auth login; refusal fallbacks are enabled by default).
Web console
uv pip install "agentknows[ui]"
agentknows ui # opens http://127.0.0.1:8787A local one-page console over the same engine: pick a verb (research / search /
read / hot), type a query, watch the research fan-out complete source-by-source
live (SSE), and read the rendered bundle. doctor lives in the nav. Local-first
on purpose — the strongest backends (yt-dlp, gh, cookies, OpenCLI) are on your
machine, so the console runs next to them.
MCP server
agentknows-mcp # stdioClaude Desktop / Cursor config:
{"mcpServers": {"agentknows": {"command": "agentknows-mcp"}}}Tools: reach_read, reach_search, reach_hot, reach_research, reach_doctor, reach_platforms. (reach_research returns the raw bundle — the calling model does its own synthesis.)
Platform support
Platform | read | search | hot | Needs |
web (any URL) | Jina Reader | Exa via mcporter | — | nothing / mcporter |
youtube | metadata + transcript | ytsearch | — | yt-dlp (bundled) |
github | repo / issue / PR | repos, code, issues, prs | — | gh CLI |
hackernews | story + comments | Algolia | front page | nothing |
stocks (NSE/BSE/US) | live quote | symbol lookup | — | nothing (yfinance bundled) |
news (IN + Western) | — | keyword filter | fresh headlines | nothing |
discourse (ValuePickr + any forum) | topic + posts | forum search | top threads | nothing |
rss | feed entries | — | — | nothing |
tweet | search | — | twitter-cli + cookies (burner account!) | |
reddit / facebook / instagram | via OpenCLI | via OpenCLI | — | OpenCLI + logged-in browser |
8 of 11 platforms are zero-config. Chinese channels (bilibili, xiaohongshu, v2ex, xueqiu, xiaoyuzhou) are intentionally out of scope; their URLs still read fine through the Jina Reader catch-all.
News pack sources — India: Economic Times, LiveMint, The Hindu, Times of India,
Moneycontrol. Western: BBC, The Guardian, TechCrunch, The Verge, Ars Technica.
Edit adapters/news.py:FEEDS to customize.
Login-gated platforms follow Agent-Reach's boundaries: agentknows never automates logins or reads browser cookies; credentials are injected into child processes only and never logged. Use burner accounts — cookie-based API access risks bans.
Layout
src/agentknows/
├── client.py # Reach facade
├── router.py # URL → platform (native hosts + agent-reach's can_handle)
├── doctor.py # structured health report
├── models.py # ReachResult / Item envelope
├── errors.py # errors with .fix prescriptions
├── proc.py # upstream CLI runner
├── mcp_server.py # FastMCP server
├── cli.py # human CLI
└── adapters/ # one per platform, normalizing upstream output
├── stocks.py # NSE/BSE/US via yfinance
├── hackernews.py # Algolia public API
├── discourse.py # ValuePickr default; works on any Discourse forum
├── news.py # curated IN + Western RSS pack
└── ...Available Tools
6 toolsreach_doctorA
Health-check every channel: status (ok/warn/off/error), the backend currently serving it, and a runnable fix prescription when broken.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns status, backend, and a fix prescription, implying a read-only diagnostic operation. However, with no annotations, it does not address potential side effects, rate limits, or authentication needs. The behavioral traits are partially transparent but not fully detailed.
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, informative sentence that covers the purpose and output. It is concise and front-loaded, though it could be slightly more structured. Overall, it earns its place with no wasted words.
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 tool with no output schema, the description completely explains what the tool does and what it returns (status, backend, fix prescription). There are no hidden behaviors or missing details; it is fully self-contained.
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 has no parameters, so schema coverage is 100% (vacuous). Per guidelines, baseline is 4. The description adds meaning by explaining what the tool does and returns, which is sufficient for a zero-parameter tool.
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 performs a health-check on every channel, returning status, backend, and fix prescription. This is specific and distinct from sibling tools like reach_read, reach_search, etc., which imply different operations.
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 explicit when-to-use or when-not-to-use guidance is provided. The purpose is implied through the description, but alternatives are not discussed. Given the sibling list, it is the only health-check tool, so confusion is low, but the lack of explicit guidelines prevents a higher score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reach_hotB
Trending listings: hackernews (front page), news (fresh Indian/Western headlines; region: india | western), discourse (top forum topics).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| region | No | ||
| platform | Yes |
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 only describes what data is returned, not any behavioral traits like read-only nature, rate limits, or authorization requirements. Basic functional description without side-effect disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with parentheticals, efficient but slightly dense. No redundant information, but could be structured more clearly with bullet points for each source.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description omits details about output format, pagination, sorting, or error handling. It adequately states purpose but lacks operational context for complete agent use.
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 adds meaning by listing platforms (hackernews, news, discourse) and regional options (india, western) that map to 'platform' and 'region' parameters. However, 'limit' parameter is not mentioned, and parameter mapping is implicit.
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 provides trending listings from specific sources: hackernews front page, news (with regional options), and discourse forum topics. It uses a specific verb 'reach' but purpose is clear and distinguishes from siblings by focusing on 'hot' content.
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 usage for retrieving trending content but does not explicitly state when to use this tool versus alternatives like reach_read or reach_search. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reach_platformsA
List every platform and which operations (read/search/hot) it supports.
| 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 full burden. It lists platforms and operations but does not disclose any behavioral traits like auth requirements, side effects, or output format. A 3 is adequate given the simplicity of a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and efficient with no wasted words.
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 output schema and no annotations, the description is fairly complete. It covers the tool's main purpose but could mention return format or how operations are indicated.
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?
No parameters exist and schema coverage is 100% (empty schema). Baseline 4 applies as the description need not add param info.
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 lists every platform and their supported operations (read/search/hot), using a specific verb and resource. It distinguishes from siblings which perform operations on platforms.
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 usage context is implied but not explicit. It is clear this tool is for discovering platform capabilities before using sibling tools, but no when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reach_readA
Read any URL as clean text/Markdown. Routes automatically: YouTube → transcript+metadata, GitHub → repo/issue/PR via gh, Hacker News → story+comments, Discourse forums → topic+posts, RSS feeds → entries, anything else → Jina Reader. Also reads stock tickers (pass a symbol like RELIANCE or AAPL to reach_search with platform=stocks, or a plain URL here). If a platform's tool is missing, degrades to Jina Reader and includes the setup hint in meta.setup_hint.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses automatic routing, degradation, and meta.setup_hint. Does not cover auth or error handling, but provides substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with main purpose, followed by platform list and degradation. Efficiently structured with no wasted sentences, though it could be slightly more concise.
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 complexity (multiple routing, stock tickers, degradation) and no output schema, the description covers key behaviors. Missing details on return format but sufficient for an agent.
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 has 0% description coverage. Description adds meaning for the 'url' parameter (accepts stock tickers) but does not explain 'max_chars' beyond its default. Partially compensates for missing schema 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?
Explicitly states 'Read any URL as clean text/Markdown' and lists specific platform routings (YouTube, GitHub, etc.), distinguishing it from siblings like reach_search which is for searching.
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?
Implicitly tells when to use (when you have a URL to read) and notes degradation behavior. Does not explicitly state when not to use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reach_researchA
Cross-platform research: fans the query out in parallel across web (Exa), Hacker News, Indian+Western news, YouTube, ValuePickr, and Twitter/Reddit if configured. Returns one merged Markdown bundle with per-source coverage notes — synthesize it yourself. region: "india" | "western" | "" (both).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| region | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses parallel execution, merged Markdown output with per-source notes, and region parameter behavior. It does not mention error handling or rate limits, but the behavioral traits for a read-only research tool are adequately conveyed.
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 extremely concise: two sentences with an additional parenthetical for region. No redundant phrases, front-loaded with core purpose. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides reasonable completeness: explains output format (merged Markdown with per-source notes) and key parameter behavior. It doesn't detail error behaviors but is sufficient for typical use. Sibling context helps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains the region parameter values clearly but does not describe the 'limit' parameter (integer default 8). The 'query' parameter is self-explanatory. Partial compensation, missing one param.
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 it performs cross-platform research by fanning out queries in parallel across specified sources (web, Hacker News, news, YouTube, etc.). It distinguishes itself from sibling tools like reach_search (likely single-platform) by emphasizing the multi-source parallel approach.
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?
While the description implies use for broad research across multiple platforms, it lacks explicit guidance on when to use this tool versus alternatives like reach_search or reach_hot. No when-not scenarios or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reach_searchA
Search a platform. platform: web (Exa semantic search), youtube, github, hackernews, twitter, stocks (NSE/BSE/US symbol lookup), news (Indian+Western headlines), discourse (ValuePickr by default, any forum via kwargs), reddit/facebook/instagram (need OpenCLI + logged-in browser session).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| platform | No | web |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that social media platforms require a logged-in browser session and OpenCLI, and specifies search behaviors (e.g., semantic vs. symbol lookup). This is valuable behavioral context beyond the schema.
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 long sentence listing platforms and their specifics. While informative, it lacks clear structure (e.g., bullet points) and could be more concise. It earns a 3 as it is functional but not optimally organized.
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 complexity of supporting multiple platforms with different behaviors, the description covers key aspects: platform options, search types, and prerequisites. It does not explain return format or pagination, but for a search tool this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains platform values well but provides no detail on query or limit parameters. The query and limit remain underspecified, leaving ambiguity for the agent.
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 is for searching multiple platforms like web, youtube, github, etc., with specific search types (e.g., Exa semantic search, stock symbol lookup). It distinguishes itself from sibling tools like reach_read by focusing on search across diverse sources.
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 explicit guidance on which platform to use based on the data source needed, and notes prerequisites (e.g., OpenCLI for social media). However, it does not explicitly compare to alternatives like reach_hot or reach_research.
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.
6 tool updates
v0.1.0- First observed
reach_doctor - First observed
reach_hot - First observed
reach_platforms - First observed
reach_read - First observed
reach_research - First observed
reach_search
TDQS
Scored across 6 tools
Each tool has a distinct purpose: reading URLs, searching platforms, fetching trending content, performing cross-platform research, health-checking channels, and listing supported platforms. No overlap in functionality.
All tools follow the consistent 'reach_' prefix followed by a clear verb or noun (read, search, hot, research, doctor, platforms), creating a predictable pattern.
6 tools is well-scoped for a platform-agnostic content access server, covering reading, searching, trending, research, health checks, and capability discovery without bloat.
The tool surface covers the core workflows (read, search, trending) and adds health-check and platform-discovery tools. Minor gaps: stock ticker handling is split across read and search, and some platforms require explicit setup in reach_search.
Maintenance
Related MCP Connectors
Dive into the latest and greatest from the tech world with our Hacker News MCP server.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceZero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.10Apache 2.0

supragents-mcpofficial
AlicenseNot gradedqualityCmaintenanceA read-only research MCP server that provides search and browsing tools for Hacker News, Reddit, and Product Hunt. Works with zero API keys for basic use.MIT- FlicenseNot gradedqualityCmaintenanceMCP server providing web search, news search, and X/Twitter search capabilities via HTTP or stdio.-
- AlicenseNot gradedqualityBmaintenanceMCP server that aggregates AI news, academic papers from ArXiv, and trending GitHub repositories from multiple sources, enabling users to fetch, search, and filter recent AI content via natural language.1MIT