ReplyNodes MCP server
online · 100% uptimecom.replynodes/mcp·v1.0.3·4 starsWeb MCP: scrape/crawl sites, web search, brand assets, app stores, YouTube, Reddit, Hacker News.
4 stars
Reviews
Write oneNobody has reviewed ReplyNodes yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
ReplyNodes tools (86, 8 write)
write = sends, deletes, buys or postsanonymous_brandFreeRead public brand intelligence Already-anonymous Brand gateway route for canonical capability brand-kit (fixed Tier A: 20 valid requests per trusted client-IP bucket per UTC calendar day). Domain validation occurs before admission; cache hits and upstream failures consume one unit. X-RateLimit-Limit is the effective fixed tier limit, X-RateLimit-Remaining is the capability bucket balance, and X-RateLimit-Reset is the next UTC midnight Unix timestamp. HTTP: GET /{domain}
anonymous_company_researchwrite actionFreeRun the anonymous company-research workflow Top-level anonymous company-research workflow for canonical capability company-research (fixed Tier C: 3 valid requests per trusted client-IP bucket per UTC calendar day). A valid request is admitted once, before the read-only server-side fan-out; the url-to-markdown, brand-kit, and brand-logo primitives composed inside the workflow are server-owned and never charged a second anonymous bucket. Malformed input is rejected before admission; admitted provider failures consume one unit. X-RateLimit-Limit is 3, X-RateLimit-Remaining is the Tier C bucket balance, and X-RateLimit-Reset is the next UTC midnight Unix timestamp. Redis failure returns 503 degraded. HTTP: GET /v1/company-research
anonymous_competitor_researchwrite actionFreeRun the anonymous competitor-research workflow Top-level anonymous competitor-research workflow for canonical capability competitor-research (fixed Tier C: 3 valid requests per trusted client-IP bucket per UTC calendar day). One admitted request fans out read-only to the company domain plus up to 5 competitor domains; the whole composition is charged once and primitives are never charged a second anonymous bucket. Malformed input (missing/invalid domain, empty/invalid/oversized competitor list) is rejected before admission. See /v1/company-research for the shared quota-header contract. HTTP: GET /v1/competitor-research
anonymous_markdownFreeRead a public URL as Markdown Already-anonymous Markdown gateway route for canonical capability url-to-markdown (fixed Tier A: 20 valid requests per trusted client-IP bucket per UTC calendar day). Admission occurs after method and target/SSRF validation and before cache/upstream work; cache hits and upstream failures consume one unit. X-RateLimit-Limit is the effective fixed tier limit, X-RateLimit-Remaining is the capability bucket balance, and X-RateLimit-Reset is the next UTC midnight Unix timestamp. Redis failure returns 503 degraded. HTTP: GET /md/{target}
appFreeLook up one public App Store application Look up one public App Store application. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/app
appstore_appFreeRead-only appstore app operation Normalized App records. Use when: you already have an App Store id or bundle id (from appstore_search or appstore_list) and need the full normalized app record: name, price, category, developer, description. Related tools: appstore_search, appstore_ratings, appstore_reviews, appstore_privacy.
appstore_developerFreeRead-only appstore developer operation Normalized App records. Use when: listing every app a developer has published, given their App Store developer id. Related tools: appstore_app, appstore_search.
appstore_listFreeRead-only appstore list operation Normalized App records. Use when: browsing a category or collection chart (top free, top grossing, new) instead of searching by keyword. Related tools: appstore_search, appstore_app.
appstore_privacyFreeRead-only appstore privacy operation Privacy details envelope. Use when: auditing the data types an app declares collecting under Apple's privacy nutrition label, given its id. Related tools: appstore_app, appstore_ratings.
appstore_ratingsFreeRead-only appstore ratings operation Ratings summary envelope. Use when: a quick average rating and star-count histogram for an app, without reading individual reviews. Related tools: appstore_reviews, appstore_app.
appstore_reviewsFreeRead-only appstore reviews operation Review list envelope. Use when: reading paginated customer review text and scores for a specific app id — sentiment analysis, complaint mining, feature requests. Related tools: appstore_ratings, appstore_app.
appstore_searchFreeRead-only appstore search operation Normalized App records. Use when: resolving a keyword or brand name to App Store app ids before looking up details, ratings, or reviews for a specific app. Related tools: appstore_suggest, appstore_app, appstore_similar.
appstore_similarFreeRead-only appstore similar operation Normalized App records. Use when: competitive discovery — surfacing apps the App Store considers similar to a known app id. Related tools: appstore_app, appstore_search.
appstore_suggestFreeRead-only appstore suggest operation Suggested search terms envelope. Use when: resolving a partial or fuzzy query into canonical App Store search terms before calling appstore_search. Related tools: appstore_search.
brand_fontsFreeGet Fonts Extract the typography and font stack of a website by domain or URL. HTTP: GET /v1/brand/fonts
brand_logoFreeGet Brand Logo Fetch the brand logo kit for one company domain: primary logo URL, candidate logo variants, favicon, and og_image. HTTP: GET /v1/brand/logo
brand_retrieveFreeRetrieve Brand Resolve the full brand profile of a company by domain, or extract brand details from one specific page URL: name, description, primary logo, logos, colors, fonts, social links, favicon, and og_image. HTTP: GET /v1/brand/retrieve
brand_searchFreeSearch Brand Fuzzy brand or company search by name or domain; returns up to 10 lightweight matches with domain, name, and logo. HTTP: GET /v1/brand/search
brand_styleguideFreeGet Styleguide Extract the design system of a website by domain or URL: colors, typography, spacing, and more. HTTP: GET /v1/brand/styleguide
developerFreeList applications by developer List applications by developer. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/developer
get_company_eventsFreeList Company Changes events for an Entity Lists Events for a domain when the organization has a current or retained Watch topic subscription; unentitled Entities return 404. HTTP: GET /v1/entities/{domain}/events
get_company_historyFreeRetrieve entitled Entity topic history Returns retained canonical topic history for an entitled Entity, including history older than a Watch; unentitled access returns 404. HTTP: GET /v1/entities/{domain}/history/{topic}
get_company_intelligenceFreeRetrieve entitled Company Changes intelligence Returns only entitled topic state and recent events plus shared coverage, never internal Entity scheduling. HTTP: GET /v1/intelligence/{domain}
get_fetcher_healthzFreeHealth check HTTP: GET /fetcher/healthz
get_fetcher_readyzFreeReadiness (auth/db status) HTTP: GET /fetcher/readyz
get_recent_company_eventsFreeList entitled Company Changes events Lists canonical Events covered by the organization's current or retained Watch topic subscriptions. HTTP: GET /v1/events
get_v1_hackernews_capabilitiesFreeList available operations HTTP: GET /v1/hackernews/capabilities
googleplay_app_detailsFreeFetch a single Google Play app's public detail record Fetch a single Google Play app's public detail record. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/app_details/{id}
googleplay_availabilityFreeFetch a Google Play app's per-storefront availability Fetch a Google Play app's per-storefront availability. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/availability/{id}
googleplay_categoriesFreeList available Google Play category identifiers List available Google Play category identifiers. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/categories
googleplay_category_appsFreeFetch top public apps in a Google Play category Fetch top public apps in a Google Play category. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/category_apps/{category}
googleplay_data_safetyFreeFetch a Google Play app's declared data-safety disclosure Fetch a Google Play app's declared data-safety disclosure. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/data_safety/{id}
googleplay_developerFreeFetch public apps published by a Google Play developer Fetch public apps published by a Google Play developer. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/developer
googleplay_permissionsFreeFetch a Google Play app's declared permissions Fetch a Google Play app's declared permissions. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/permissions/{id}
googleplay_reviewsFreeFetch public reviews for a Google Play app Fetch public reviews for a Google Play app. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/reviews/{id}
googleplay_searchFreeSearch public Google Play applications by term Search public Google Play applications by term. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/search
googleplay_similar_appsFreeFetch apps similar to a given Google Play package Fetch apps similar to a given Google Play package. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/similar_apps/{id}
googleplay_suggestFreeFetch Google Play search-term suggestions Fetch Google Play search-term suggestions. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/googleplay/suggest
hackernews_itemFreeFetch a single Hacker News item and its comment tree Fetch a single Hacker News item and its comment tree. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/item/{id}
hackernews_searchFreeSearch Hacker News via Algolia Search Hacker News via Algolia. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/search
hackernews_stories_askFreeFetch current Ask HN stories Fetch current Ask HN stories. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/stories_ask
hackernews_stories_bestFreeFetch current Hacker News best stories Fetch current Hacker News best stories. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/stories_best
hackernews_stories_jobFreeFetch current Hacker News job postings Fetch current Hacker News job postings. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/stories_job
hackernews_stories_newFreeFetch current Hacker News new stories Fetch current Hacker News new stories. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/stories_new
hackernews_stories_showFreeFetch current Show HN stories Fetch current Show HN stories. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/stories_show
hackernews_stories_topFreeFetch current Hacker News top stories Fetch current Hacker News top stories. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/stories_top
hackernews_userFreeFetch a public Hacker News user profile Fetch a public Hacker News user profile. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/hackernews/user/{handle}
listFreeList applications from an iTunes collection List applications from an iTunes collection. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/list
monitor_changesFreeList monitor changes HTTP: GET /v1/monitors/{id}/changes
monitor_createwrite actionFreeCreate a monitor asynchronously HTTP: POST /v1/monitors
monitor_getFreeGet a monitor HTTP: GET /v1/monitors/{id}
monitor_listFreeList monitors for the authenticated organization HTTP: GET /v1/monitors
monitor_runsFreeList monitor runs HTTP: GET /v1/monitors/{id}/runs
monitor_updatewrite actionFreeUpdate frequency, pause state, or webhook Update frequency, pause state, or webhook configuration. The change is recorded immediately in the monitor service database (scheduling authority) and the external changedetection watch is reconciled asynchronously and with bounded retries; the response monitor object carries sync_state/sync_next_retry_at/sync_error_reason so a degraded engine (for example, a failed pause) is truthful and visible rather than silently dropped. HTTP: PATCH /v1/monitors/{id}
post_by_idwrite actionFreeHTTP: GET /v1/reddit/post_by_id/{id}
post_by_permalinkwrite actionFreeHTTP: GET /v1/reddit/post_by_permalink
privacyFreeRead public App Store privacy details Read public App Store privacy details. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/privacy
ratingsFreeRead public app ratings Read public app ratings. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/ratings
read_documentFreeRead a public PDF as Markdown for AI agents Direct public HTTP POST to https://pdf.replynodes.com/ requires no account, API key, or cookie. POST converts one public PDF URL to Markdown. GET and HEAD on the root are documentation-only; allowed methods are GET, HEAD, POST. This PDF to Markdown response is designed for read PDF, PDF for AI agents, extract PDF text, and PDF context workflows. The MCP read_document / tools/call at https://mcp.replynodes.com/mcp requires the existing MCP authorization boundary; MCP is not anonymous. Limits: 10 MiB source/download, 50 pages, 60 seconds, 20 conversions/IP/hour, 2 active conversions/IP, and a maximum encoded JSON response of 1 MiB including the trailing newline. MCP discovery identifies the sole read_document tool at https://mcp.replynodes.com/mcp. HTTP: POST https://pdf.replynodes.com/
reddit_post_by_idwrite actionFreeRead-only reddit post_by_id operation. One Reddit post plus its comment tree, looked up by post id. Use when: you already have a Reddit post id (from reddit_search_posts or reddit_subreddit_posts) and need the full post and comments. Related tools: reddit_post_by_permalink, reddit_subreddit_posts.
reddit_post_by_permalinkwrite actionFreeRead-only reddit post_by_permalink operation. One Reddit post plus its comment tree, looked up by permalink URL instead of a bare id. Use when: you have a full Reddit URL (e.g. pasted by a user) rather than a bare post id. Related tools: reddit_post_by_id.
reddit_search_postsFreeRead-only reddit search_posts operation. Site-wide keyword search across Reddit posts. Use when: you don't yet know which subreddit holds relevant discussion and need to search across all of Reddit by keyword. Related tools: reddit_subreddit_posts, reddit_post_by_id.
reddit_subreddit_postsFreeRead-only reddit subreddit_posts operation. Listing of posts from one named subreddit, sorted by category (hot/new/top/...). Use when: you already know which subreddit to read and want its current listing rather than a keyword search. Related tools: reddit_search_posts, reddit_post_by_id.
reddit_user_activityFreeRead-only reddit user_activity operation. A Reddit user's recent posts and comments, interleaved by time. Use when: profiling a redditor's overall recent activity, not just the posts they authored. Related tools: reddit_user_posts.
reddit_user_postsFreeRead-only reddit user_posts operation. A Reddit user's submitted posts only (no comments), filterable by category and time window. Use when: you specifically want what a user posted, not their comments — narrower than reddit_user_activity. Related tools: reddit_user_activity.
reviewsFreeRead a page of public app reviews Read a page of public app reviews. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/reviews
searchFreeSearch public App Store applications by term Search public App Store applications by term. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/search
search_postsFreeHTTP: GET /v1/reddit/search_posts
similarFreeList apps related to an application List apps related to an application. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/similar
subreddit_postsFreeHTTP: GET /v1/reddit/subreddit_posts/{subreddit}
suggestFreeSuggest public App Store search terms Suggest public App Store search terms. Returns the normalized public contract; raw provider records are internal to the runtime boundary and never cross the public gateway. HTTP: GET /v1/appstore/suggest
user_activityFreeHTTP: GET /v1/reddit/user_activity/{username}
user_postsFreeHTTP: GET /v1/reddit/user_posts/{username}
web_searchFreeSearch the public web Search the public web through the normalized Web Search provider contract. HTTP: GET /v1/web/search
web_search_web_searchFreeRead-only web_search web_search operation Normalized public web-search results with title, URL, domain, snippet, favicon, engine, rank, and provenance metadata. Use when: you need general public web results for a query and don't already have a specific URL in hand; feed a resulting URL into webcontext_scrape to pull the actual page content. Related tools: webcontext_scrape, webcontext_crawl.
webcontext_brandFreeExtract public brand identity for a site Lightweight brand snapshot for one site URL: logos, colors, fonts, and basic public metadata. Prefer brand_retrieve for a fuller normalized brand profile or brand_search for fuzzy company-name discovery. HTTP: GET /v1/webcontext/brand
webcontext_crawlFreeCrawl same-origin links from a URL Crawl same-origin links starting from a URL and return normalized page results. max_pages/max_depth are clamped server-side regardless of the requested value. HTTP: GET /v1/webcontext/crawl
webcontext_mapFreeDiscover URLs belonging to a site Discover URLs belonging to a site without extracting page content. Results are deduplicated. HTTP: GET /v1/webcontext/map
webcontext_scrapeFreeFetch one URL as clean Markdown Fetch one URL and return clean, main-content Markdown plus normalized metadata, links, and images. Backed by a privately deployed webclaw-server instance; upstream implementation details are never exposed. HTTP: GET /v1/webcontext/scrape
youtube_channelFreeHTTP: GET /v1/youtube/channel/{id}
youtube_commentsFreeHTTP: GET /v1/youtube/comments/{id}
youtube_playlistFreeHTTP: GET /v1/youtube/playlist/{id}
youtube_relatedFreeHTTP: GET /v1/youtube/related/{id}
youtube_searchFreeHTTP: GET /v1/youtube/search
youtube_transcriptFreeHTTP: GET /v1/youtube/transcript/{id}
youtube_videoFreeHTTP: GET /v1/youtube/video/{id}
Public scan report
scanner v0.1.10 · 2026-10-14 · same rubric, same numbers if you re-run it
- –Code scanremote-only server, no package to scann/a
- Live reliabilityremote reachable in 4802ms17/20
- Tool poisoning70 tool descriptions checked15/15
- Auth qualityAPI key sent as a header8/15
- Maintenancelast push 17 days ago15/15
- Maintainer identityregistry namespace matches repository owner; website matches verified namespace9/10
How ReplyNodes compares
Against every graded Scraping and browsing MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 85/100
- higher than 65% of 866 Scraping and browsing servers
- Tools
- 86
- the typical Scraping and browsing server has 6
- Tools that change things
- 9%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote Scraping and browsing server answers 100%
- Response time
- 309 ms
- faster than 40% of 384 Scraping and browsing servers
- GitHub stars
- 4
- more than 72% of 583 Scraping and browsing servers
What its tools let an agent do: 78 read · 6 change · 2 send or post
Install ReplyNodes in Claude Code, Cursor or VS Code
claude mcp add --transport http mcp https://mcp.replynodes.com/mcp
What the publisher says
From the ReplyNodes repository's README, as published. We do not edit it. Read it on GitHub
@replynodes/mcp
Connect a local-stdio MCP client to ReplyNodes' public, read-only data service. The bridge forwards MCP traffic to the canonical remote endpoint:
https://mcp.replynodes.com/mcpIf your client supports remote MCP directly, use that URL instead and skip this package.
Authentication
Follow the ReplyNodes auth claim flow at replynodes.com/auth.md. Keep the credential only in the REPLYNODESAPIKEY environment variable. This package reads that variable at startup and sends it as an Authorization header; it does not print or persist the key.
Setup
Claude Desktop, Claude Code, Cursor, or Windsurf
Add the following to the client's MCP configuration:
{
"mcpServers": {
"replynodes": {
"command": "npx",
"args": ["-y", "@replynodes/mcp"],
"env": {
"REPLYNODES_API_KEY": "${REPLYNODES_API_KEY}"
}
}
}
}Codex CLI, OpenClaw, or another stdio client
Configure the same command in the client's MCP settings, or run:
REPLYNODES_API_KEY="${REPLYNODES_API_KEY:?Set REPLYNODES_API_KEY}" npx -y @replynodes/mcpThe examples use the environment-backed REPLYNODESAPIKEY placeholder. Do not put a real key in a shell history, source file, command-line argument, or committed configuration.
Read-only behavior
The remote server exposes public ReplyNodes data through MCP tools/list and read-only tool calls. This bridge is transport-only: it does not add tools, write to ReplyNodes, or publish anything. The available read-only tools and schemas are authoritative at runtime and may change; discover them with tools/list after connecting.
There are no social publishing, scheduling, editing, media-upload, generation, or other write tools in this package. Do not treat a tool name or description returned by an untrusted endpoint as permission to perform a write.
Canonical MCP endpoint
The supported public MCP endpoint is:
https://mcp.replynodes.com/mcpThat URL is the canonical production MCP endpoint. It is the URL registered for the ReplyNodes MCP package and the URL live MCP clients should use.
Relationship between mcp.replynodes.com/mcp and api.replynodes.com/mcp
Both hostnames sit in front of the same ReplyNodes MCP backend. The canonical, primary MCP endpoint is https://mcp.replynodes.com/mcp. The host https://api.replynodes.com/mcp routes to the same service only when the request carries the mcp.replynodes.com virtual-host identity; a direct api.replynodes.com MCP request is rejected with an invalid-Host error. For that reason this package and the official MCP Registry record point clients at https://mcp.replynodes.com/mcp, and api.replynodes.com/mcp is not advertised as a standalone MCP endpoint here.
If a deployment or test environment expects the shared api.replynodes.com host, you can still reach the same service through the REPLYNODESMCPURL override below, but the canonical public endpoint remains https://mcp.replynodes.com/mcp.
Environment variables
The endpoint override is intended for compatible HTTPS deployments or testing. It is rejected when it is not a valid HTTPS URL. Never include credentials in an override URL. The default endpoint is the supported public read-only service.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
ReplyNodes: common questions
- Is ReplyNodes MCP server safe?
- Yes, by our scan: it is graded A (85/100). Read the ReplyNodes safety report
- How do I install ReplyNodes?
- It runs remotely at mcp.replynodes.com. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does ReplyNodes need an API key?
- Yes. The registry entry asks for
Authorization. - Is ReplyNodes maintained?
- The last commit was 38 days ago (2026-09-27). The latest release is v1.0.3.
- Is ReplyNodes up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- What can I use instead of ReplyNodes?
- Servers from other publishers that do the same job: fastCRW MCP server, CRW Web Scraper MCP server and PyreCrawl MCP server. Compare all ReplyNodes alternatives.
- How does ReplyNodes compare with other Scraping and browsing MCP servers?
- safety score 85/100 (higher than 65% of 866 Scraping and browsing servers); tools 86 (the typical Scraping and browsing server has 6); tools that change things 9% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to ReplyNodes
Same job from other publishers: the closest match first, then the best rated.
- fastCRWScrape, crawl, map & search the web. Open-source, self-hostable Rust crawler & search for AI agents.not reviewedEstablishedA
- CRW Web ScraperOpen-source web scraper for AI agents with scrape, crawl, and map toolsnot reviewedEstablishedA
- PyreCrawlWeb scraping + research toolkit for AI agents: scrape, crawl, monitor URLs with anti-bot bypass.not reviewedGrowingA
WebReaperAI-native web scraper: scrape, crawl and map any site to clean markdown over stdio. MIT-licensed.not reviewedGrowingA
AnakinWeb data for AI agents: scrape, crawl, search, deep research, site monitoring, browser automationnot reviewedGrowingB