protogrid

Search / com.replynodes/mcp

ReplyNodes

R1· needs a key

Web MCP: scrape/crawl sites, web search, brand assets, app stores, YouTube, Reddit, Hacker News.

v1.0.3 · active · repository · website · descriptor JSON · versions

An agent can connect on its own if it already holds REPLYNODES_TOKEN.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality58needs work
Trust96of 100
Uptime, 30 days92%
Latency p501666 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "replynodes": {
      "type": "http",
      "url": "https://mcp.replynodes.com/mcp",
      "headers": {
        "Authorization": "Bearer ${REPLYNODES_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http replynodes https://mcp.replynodes.com/mcp --header "Authorization: Bearer ${REPLYNODES_TOKEN}"
[mcp_servers.replynodes]
url = "https://mcp.replynodes.com/mcp"
bearer_token_env_var = "REPLYNODES_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "replynodes": {
      "type": "remote",
      "url": "https://mcp.replynodes.com/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:REPLYNODES_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "replynodes": {
      "type": "http",
      "url": "https://mcp.replynodes.com/mcp",
      "headers": {
        "Authorization": "Bearer ${REPLYNODES_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=replynodes&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnJlcGx5bm9kZXMuY29tL21jcCIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciAke1JFUExZTk9ERVNfVE9LRU59In19"
}
{
  "servers": {
    "replynodes": {
      "type": "http",
      "url": "https://mcp.replynodes.com/mcp",
      "headers": {
        "Authorization": "Bearer ${REPLYNODES_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "replynodes": {
      "httpUrl": "https://mcp.replynodes.com/mcp",
      "headers": {
        "Authorization": "Bearer ${REPLYNODES_TOKEN}"
      }
    }
  }
}
extensions:
  "replynodes":
    enabled: true
    name: "replynodes"
    type: streamable_http
    uri: "https://mcp.replynodes.com/mcp"
    headers:
      "Authorization": "Bearer ${REPLYNODES_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${REPLYNODES_TOKEN}. The registry never accepts secret values.

Quality 58 / 100needs work

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene50 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: user_activity (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); youtube_comments (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); googleplay_similar_apps (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • fail
    tools.token_costabout 584,771 tokens to load every tool, a large share of an agent's context
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes399 tool changes in 30 days
  • fail
    stability.rug_pull2 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

71 tools, about 584,771 tokens to load them all · tool set 4546081f1e37 · tools last changed 2026-10-18 · checked 2026-10-19 10:52 UTC

Tool changes

  • read_documentchangedinput schema
  • monitor_runschangedinput schema
  • monitor_changeschangedinput schema
  • monitor_updatechangedinput schema
  • monitor_getchangedinput schema
  • monitor_createchangedinput schema
  • monitor_listchangedinput schema
  • get_company_intelligencechangedinput schema
  • get_recent_company_eventschangedinput schema
  • get_company_historychangedinput schema

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 96 / 100

provenance100
liveness97
freshness85
hygiene100

+repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-92% ~updated-34d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.replynodes.com/mcp streamable-httpapi_key ${REPLYNODES_TOKEN}yes92%1666 ms2026-07-282026-10-19

Tools (71)

anonymous_brandRead 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_researchRun 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_researchRun 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_markdownRead a public URL as Markdown Already-anonymous Markdown gateway route for canonical capability url-to-markdown (dedicated Markdown tier: 100 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. Output format is chosen with request headers because the whole path and query string belong to the target URL: no Accept header, Accept: */*, text/markdown or text/plain returns Markdown (default); Accept: application/json (JSON preferred with q>0) returns the {data, meta} envelope with the same data shape as GET /v1/webcontext/scrape; X-Format: frontmatter returns Markdown preceded by a fixed seven-key YAML front-matter block; an unknown X-Format value, or application/json together with X-Format: frontmatter, returns 400 invalid_request with reason bad_option before any quota is spent. X-Include-Selectors and X-Exclude-Selectors (comma-separated CSS selectors, at most 10 entries and 512 bytes per header, duplicates removed, no control characters or { } ; < >) filter the page; they are part of the cache key; with selectors set, a page that returns an access-check page returns 502 upstream_blocked (no crawl fallback). A page main heading may remain even when it matches an exclude selector. Every error response of this host carries error.reason (a stable value from the closed set in the MarkdownHostError schema) and error.retryable in addition to error.code, error.message and error.request_id. Successful responses set Vary: Accept, X-Format. HTTP: GET /md/{target}
appLook 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
brand_fontsGet Fonts Extract the typography and font stack of a website by domain or URL. HTTP: GET /v1/brand/fonts
brand_logoGet 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_retrieveRetrieve 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_searchSearch 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_styleguideGet Styleguide Extract the design system of a website by domain or URL: colors, typography, spacing, and more. HTTP: GET /v1/brand/styleguide
developerList 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_eventsList 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_historyRetrieve 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_intelligenceRetrieve 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_healthzHealth check HTTP: GET /fetcher/healthz
get_fetcher_readyzReadiness (auth/db status) HTTP: GET /fetcher/readyz
get_gateway_capabilitiesGet gateway capabilities Unauthenticated, read-only discovery of the gateway-wide provider inventory, routes currently callable under their provider manifests, and the embedded OpenAPI document. Callable discovery is a runtime snapshot, not authorization or billing state. HTTP: GET /v1/capabilities
get_recent_company_eventsList 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_capabilitiesList available operations HTTP: GET /v1/hackernews/capabilities
googleplay_app_detailsFetch 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_availabilityFetch 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_categoriesList 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_appsFetch 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_safetyFetch 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_developerFetch 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_permissionsFetch 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_reviewsFetch 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_searchSearch 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_appsFetch 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_suggestFetch 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_itemFetch 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_searchSearch 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_askFetch 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_bestFetch 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_jobFetch 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_newFetch 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_showFetch 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_topFetch 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_userFetch 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}
listList 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_changesList monitor changes HTTP: GET /v1/monitors/{id}/changes
monitor_createCreate a monitor asynchronously HTTP: POST /v1/monitors
monitor_getGet a monitor HTTP: GET /v1/monitors/{id}
monitor_listList monitors for the authenticated organization HTTP: GET /v1/monitors
monitor_runsList monitor runs HTTP: GET /v1/monitors/{id}/runs
monitor_updateUpdate 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_idHTTP: GET /v1/reddit/post_by_id/{id}
post_by_permalinkHTTP: GET /v1/reddit/post_by_permalink
privacyRead 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
ratingsRead 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_documentRead 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/
reviewsRead 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
searchSearch 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_postsHTTP: GET /v1/reddit/search_posts
similarList 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_postsHTTP: GET /v1/reddit/subreddit_posts/{subreddit}
suggestSuggest 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_activityHTTP: GET /v1/reddit/user_activity/{username}
user_postsHTTP: GET /v1/reddit/user_posts/{username}
webcontext_brandExtract 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_crawlCrawl 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_mapDiscover URLs belonging to a site Discover URLs belonging to a site without extracting page content. Results are deduplicated. HTTP: GET /v1/webcontext/map
webcontext_scrapeFetch 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
web_searchSearch the public web Search the public web through the normalized Web Search provider contract. HTTP: GET /v1/web/search
youtube_channelHTTP: GET /v1/youtube/channel/{id}
youtube_commentsHTTP: GET /v1/youtube/comments/{id}
youtube_playlistHTTP: GET /v1/youtube/playlist/{id}
youtube_relatedHTTP: GET /v1/youtube/related/{id}
youtube_searchHTTP: GET /v1/youtube/search
youtube_transcriptHTTP: GET /v1/youtube/transcript/{id}
youtube_videoHTTP: GET /v1/youtube/video/{id}

Schemas: list_tools.

Also listed as

1 other active names share this repository: io.github.replynodes/mcp

Similar MCP servers

Official server.json
{
  "name": "com.replynodes/mcp",
  "_meta": {
    "io.modelcontextprotocol.registry/publisher-provided": {
      "pricing": "https://replynodes.com/pricing",
      "homepage": "https://replynodes.com",
      "capabilities": [
        "web-extraction",
        "web-crawling",
        "website-map",
        "web-search",
        "brand-retrieval",
        "brand-search",
        "brand-assets",
        "brand-fonts",
        "brand-styleguide",
        "app-store",
        "google-play",
        "youtube",
        "youtube-transcripts",
        "reddit",
        "hacker-news"
      ],
      "documentation": "https://docs.replynodes.com/docs/mcp",
      "authentication": "Bearer API key required for production tool calls"
    }
  },
  "icons": [
    {
      "src": "https://mcp.replynodes.com/favicon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "ReplyNodes",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.replynodes.com/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "isRequired": true,
          "description": "ReplyNodes API key sent as a Bearer token for authenticated access."
        }
      ]
    }
  ],
  "version": "1.0.3",
  "repository": {
    "url": "https://github.com/replynodes/replynodes-mcp",
    "source": "github"
  },
  "websiteUrl": "https://replynodes.com/mcp",
  "description": "Web MCP: scrape/crawl sites, web search, brand assets, app stores, YouTube, Reddit, Hacker News."
}