Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.NovadaLabs/novada-mcp

NPM · NOVADA-MCP · 2 COMPONENTS · SCANNED SEP 20

Search, extract, crawl, map, research, scrape 16 platforms, browser automation, proxy — one API key.

67 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security89
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects uuid 8.3.2, reached via exceljs > uuid. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 94 of 241 dependencies flagged as unhealthy (7 deprecated). View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 20630 tokens (~468/item across 44 items; 38 tools + 6 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 95% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 38 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the io.github.NovadaLabs/novada-mcp server?

io.github.NovadaLabs/novada-mcp runs locally as an npm package, launched with npx -y novada-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · novada-mcp

# add to Claude Code
claude mcp add novadalabs-novada-mcp -- npx -y novada-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "novadalabs-novada-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "novada-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "novadalabs-novada-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "novada-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add novadalabs-novada-mcp -- npx -y novada-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "novadalabs-novada-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "novada-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add novadalabs-novada-mcp --command npx --arg -y --arg novada-mcp
# ~/.hermes/config.yaml
mcp_servers:
  novadalabs-novada-mcp:
    command: "npx"
    args: ["-y", "novada-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "novadalabs-novada-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "novada-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add novadalabs-novada-mcp -t stdio -c npx -a -y novada-mcp
// mcp.json
{
  "mcpServers": {
    "novadalabs-novada-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "novada-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 15 Sept 26 67

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/novada-mcp@0.9.39

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-w5hq-g745-h8pq CVE-2026-41907 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 241 packages
Packages resolved 241
Deprecated 7
Stale 91
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 38 exposed · ~20,334 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
novada_account ~487

Single-call account & billing dashboard. Composes wallet balance, plan balances, capture logs, and health entitlements via the `section` param. **Best for:** "what's my account status / balance" one-shot checks. **section="summary" (default):** wallet balance + plan quotas + recent capture logs + product entitlements. **section="balance":** master wallet currency balance. **section="usage":** paginated transaction history (start_time/end_time/page/page_size). **section="plans":** per-product plan balances (residential/isp/mobile/datacenter/static/capture); filter with products[]. **section="traffic":** daily proxy traffic consumption; filter with start_time/end_time/products[]. **Auth:** NOVADA_DEVELOPER_API_KEY (falls back to NOVADA_API_KEY). **Aliases:** novada_wallet_balance, novada_wallet_usage_record, novada_plan_balance_all, novada_traffic_daily, novada_capture_logs, novada_account_summary, novada_health, novada_health_all all route here.

NameTypeReqDescription
end_timestringInclusive end date YYYY-MM-DD (usage/traffic sections only).
formatstringOutput format. 'card' (default): human-readable markdown card — scannable headline, status table with icons, expired plans highlighted. 'json': clean flat structured object for programmatic use — no…
pageinteger1-based page index (usage section only).
page_sizeintegerPage size, max 200 (usage section only).
productsarraySubset of products to query (plans/traffic sections only). plans: residential|isp|mobile|datacenter|static|capture. traffic: residential|isp|mobile|datacenter|static.
sectionstringWhich account data to fetch. 'summary' (default): full dashboard — wallet balance + plan balances + recent capture logs + health entitlements (proxy/browser). 'balance': master wallet balance (curren…
start_timestringInclusive start date YYYY-MM-DD (usage/traffic sections only).

No output schema declared.

No examples provided.

novada_ai_monitor ~428

Search PUBLIC indexed pages on AI-company domains (chatgpt.com/openai.com, perplexity.ai, anthropic.com, etc.) for brand mentions and sentiment. NOT page-change monitoring (novada_monitor) and does NOT query live AI models — a brand absent from indexed pages may still be discussed live; this only reflects indexed-page coverage. **How it works:** for each selected domain group, runs a Google search scoped to that domain (e.g. site:openai.com "brandname") and analyzes snippets for sentiment, claims, and competitor co-mentions. **Best for:** checking brand presence on AI-company public docs/blogs/changelogs. **Not for:** live model answers about your brand (query the model directly), general web search (novada_search), real-time social monitoring (novada_scrape with twitter/instagram). **Output:** per-domain sentiment (positive/neutral/negative), key claims from indexed snippets, competitor mentions, mention counts, source URLs. **Domains:** chatgpt.com+openai.com, perplexity.ai, grok.com+x.com/i/grok, claude.ai+anthropic.com, gemini.google.com. Default: chatgpt, perplexity, grok.

NameTypeReqDescription
brandstringyesBrand or product name to search for on AI-company public web domains. E.g. 'novada', 'firecrawl', 'stripe'.
modelsarrayDomain groups to search (each key → a set of AI-company public web domains, e.g. 'chatgpt' → chatgpt.com + openai.com). This does NOT query the live AI models — it searches their indexed public pages…
topicsarrayTopic filter to narrow the search. Only the FIRST entry is used; the rest are ignored. E.g. ['pricing']. Default: general brand mentions.

No output schema declared.

No examples provided.

novada_browser ~504

Interact with a web page — click, fill forms, scroll, screenshot, or run JavaScript. Chain multiple actions in one call. **Best for:** login flows, paginated content, SPAs, form submission, visual verification, scraping behind interactions. **Not for:** simple page reads (novada_extract), structured data (novada_scrape), raw HTML (novada_extract format="html"). **Actions:** navigate, click, type, screenshot, snapshot, aria_snapshot, evaluate, wait, scroll, hover, press_key, select — up to 20/call. snapshot = full DOM text; aria_snapshot = smaller semantic tree (prefer it for extraction). **Sessions:** session_id reuses the same page (cookies, login) across calls — reliable only on the local/long-lived server; on hosted serverless, treat each call as one-shot. close_session releases early. **Auth:** NOVADA_API_KEY auto-provisions Browser API credentials; NOVADA_BROWSER_WS optionally overrides. **SPAs:** wait with domcontentloaded, never networkidle. `country` is accepted but not yet applied to the browser exit node — don't rely on it for geo-routing. **Constraint:** close_session/list_sessions must be the ONLY action in the call.

NameTypeReqDescription
actionsarrayyesArray of browser actions to execute sequentially (max 20/call). Each action MUST use the discriminated union format {action: "<type>", ...fields}, e.g. {action:"navigate",url:"https://example.com"} |…
countrystringISO 2-letter country code (e.g. 'us', 'gb'). NOTE: accepted but NOT yet applied — the browser exit node is not geo-routed by this param today. Do not rely on it for geo-restricted platforms.
session_idstringOptional session ID for persistent browser state across calls. Reuses the same browser page (cookies, localStorage, login state). Warm reuse is ~5x faster (~1.5s vs ~8s cold start). Sessions expire a…
timeoutintegerTotal timeout for all actions in ms. Default 60000.

No output schema declared.

No examples provided.

novada_browser_flow ~300

Simplified browser automation — 5 actions (click, scroll, wait, type, screenshot). Use only if you need this simpler interface or novada_browser is unavailable. **novada_browser is primary/more capable** — full CDP access, 12 action types + 2 session-management actions. Prefer it for new automation. **Use this when:** you need the simplified flow API or have an existing workflow built on it. **Actions:** click, scroll, wait, type, screenshot — up to 20/call. **Sessions:** session_id reuses the browser instance (cookies, login) across calls; expires after 10 min idle. **Not for:** reading one URL without interaction (novada_extract) or structured platform data (novada_scrape).

NameTypeReqDescription
actionsarrayyesOrdered sequence of browser actions to execute. Each action has a type and optional selector/value/delay.
countrystringOptional 2-letter ISO 3166-1 country code for geo-targeting the browser session (e.g. 'us', 'gb', 'de').
session_idstringOptional session ID for sticky sessions. When provided, the same browser session is reused across calls — preserving cookies, login state, and localStorage. Sessions expire after 10 minutes of inacti…
urlstringyesThe URL to open in the cloud browser. Must be a publicly accessible HTTP/HTTPS URL.

No output schema declared.

No examples provided.

novada_capture_apikey ~362

Get or reset the Capture API key (wraps POST /v1/capture/get_apikey and /v1/capture/reset_apikey). **Actions:** "get" = retrieve the current key (read-only). "reset" = regenerate it — DESTRUCTIVE, invalidates the old key, gated by a two-step approval_token. **Behavior:** call "reset" once WITHOUT `approval_token` to get a warning preview plus a fresh token (valid 10 minutes) — this does NOT call the API. Re-call with the EXACT SAME parameters plus that token to execute. `confirm: true` is a deprecated no-op. **Auth:** NOVADA_DEVELOPER_API_KEY (falls back to NOVADA_API_KEY).

NameTypeReqDescription
actionstringyesAction to perform. 'get': retrieve the current capture/scraper API key (read-only). 'reset': regenerate the API key — DESTRUCTIVE, invalidates the old key.
approval_tokenstringTwo-step approval token, required to execute 'reset'. Omit on the first call to receive a preview + a fresh approval_token (valid 10 minutes). Re-call with the EXACT SAME parameters plus this field s…
confirmbooleanDEPRECATED — ignored for both actions. Setting this alone no longer authorizes 'reset' (closed 2026-09, finding F2-2: an agent could self-supply confirm:true with no prior human-reviewed preview). Us…

No output schema declared.

No examples provided.

novada_crawl ~550

Use when you need content from a bounded set of pages (up to 20) and don't have the URLs yet. Crawls BFS/DFS, extracts each page inline. Use select_paths globs to target sections (e.g. "/docs/api/**"). **Wrong tool for whole-site jobs:** for >20 pages or a full docs site on disk, use `novada_site_copy` instead (up to 1000 pages, streams to disk, returns a manifest). novada_crawl hard-caps at 20 pages and returns bodies inline. **Best for:** competitive content analysis, a handful of related pages inline (returns bodies directly). **Not for:** a single page (novada_extract), URL discovery only (novada_map — much faster), a whole site to disk (novada_site_copy). **Performance:** avoid max_pages > 10 on large sites — crawl time scales ~1.4s/page (max_pages=20 ≈ 28s minimum). Use select_paths to narrow scope before raising max_pages. **Rendering:** `render` defaults to "auto" (static first, escalates to JS on detection) — not static-only.

NameTypeReqDescription
exclude_pathsarrayGlob patterns for URL paths to skip entirely. '*' matches within a path segment, '**' matches across segments. E.g. ['/blog/**', '/changelog/**'].
formatstringOutput format. 'markdown': human-readable (default). 'json': structured object for programmatic agent use.
instructionsstringNatural language hint for which pages to prioritize, e.g. 'only API reference pages', 'skip blog and changelog'. Echoed back in the output as a hint — it does NOT filter which pages get crawled; use…
max_pagesinteger
renderstringRendering mode. 'auto': uses static, escalates to render on first JS-heavy page detection. 'static': always static. 'render': always render (slower, handles JS sites).
select_pathsarrayGlob patterns to restrict crawled URL paths. '*' matches within a path segment, '**' matches across segments, '?' matches one char. E.g. ['/docs/**', '/api/**'].
strategystringCrawl traversal order. 'bfs' (default): breadth-first — visits all pages at current depth before going deeper, good for broad discovery. 'dfs': depth-first — follows links deeply before backtracking,…
urlstringyes

No output schema declared.

No examples provided.

novada_discover ~320

List all available Novada tools — name, description, category, group, and status. **agent_instruction:** call this first when starting a task to find the right tool. **Returns:** a markdown table grouped by category, plus a Tool Groups reference (core/scrapers/account/meta). **Filter:** category narrows the catalog (e.g. category="Proxy"); NOVADA_GROUPS/NOVADA_TOOLS (local) or ?groups=/?tools= (hosted) narrow the actual tool set exposed on this connection. **Status:** active = available now. Output includes server_version. **ONE API KEY COVERS ALL PRODUCTS.** NOVADA_API_KEY authenticates search/extract/research/crawl/scrape/unblock/proxy auto-provisioning — no separate keys needed. NOVADA_BROWSER_WS/NOVADA_PROXY_ENDPOINT unlock extras, no extra key. On tool failure, call novada_account (section="summary") for balance/plans/entitlements.

NameTypeReqDescription
categorystringOptional category filter. One of: 'Content Retrieval', 'Scraping & Verification', 'Proxy', 'Browser & Rendering', 'Account & Billing', 'Health & Discovery'. Omit to list all tools.
platformstringOptional platform domain to look up (e.g. 'amazon.com', 'tiktok.com'). When provided, returns all operations for that platform from the scraper catalog — free, no API call, no credit cost. Mutually e…

No output schema declared.

No examples provided.

novada_extract ~1,067

Extract content from any URL. Auto-handles Cloudflare/DataDome/Kasada via escalation (static → JS render → Browser CDP). Batch mode: pass url as an array for up to 10 pages in parallel. **Format selection:** - `format="markdown"` (default): full-page content for reading/analysis. - `format="json"`: structured object (url, title, content, quality, links, structured_data, fields, hints, mode, fetched_at). Use with `fields=["price","title"]` to populate `fields`. Common mistake: using markdown when you need specific fields — use format="json"+fields instead. - `format="html"`: raw HTML (truncated at 100K chars by default; adjust via max_chars). - `clean=true`: strip nav/sidebar, main content only (~15K chars vs ~100K full page). **Use for:** reading pages, batch-extracting search results, structured fields (price, author, date) — works on anti-bot pages automatically. **Not for:** URL discovery (novada_map), multi-page crawl (novada_crawl), rich platform data like Amazon/LinkedIn (novada_scrape). **Key rule:** leave render="auto" (default) — 15-100x faster on static sites; only set render="render" for known JS-heavy SPAs. **Geo-routing:** `country="de"` (ISO 2-letter) routes render fetches through that country's exit IP — for localized pricing or geo-restricted content. **Auto-saved:** every extraction is written to `~/Downloads/novada-mcp/YYYY-MM-DD/` (path shown in the response). **Project grouping:** `project="my-project"` groups outputs under a subfolder.

NameTypeReqDescription
cleanbooleanSet true to extract only main article content (strips nav, footer, ads). Default false returns full page markdown for maximum content coverage.
countrystringISO 3166-1 alpha-2 country code (e.g. 'de','us','gb') to route the fetch through an exit IP there — for localized pricing, geo-restricted content, or per-country comparisons. Only applies to render/u…
fieldsarraySpecific fields to extract (e.g. ['price','author','availability','rating']). ADVISORY/confidence-gated: each returns {value, source, confidence}. Source priority: JSON-LD → infobox/table/microdata →…
formatstringOutput format. 'markdown' (default): structured readable output. 'text': plain text. 'html': raw HTML (truncated at 100K chars by default; pass max_chars to adjust). 'json': structured JSON object wi…
max_charsintegerMaximum characters to return (default 25000, max 100000). Truncated content emits content_truncated:true + total_chars. Raise only when you need the full page.
projectstringGroup outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted.
querystringOptional query for relevance context. Helps the calling agent focus on relevant sections.
renderstringRendering mode. 'auto' (default): tries static first, escalates if JS-heavy. 'static': static HTML only. 'js' (or 'render'): force JS rendering via Web Unblocker. 'browser': force Browser API CDP (re…
urlyesURL or array of URLs (max 10) to extract. Batch mode processes in parallel. Accepted shapes: single string, array of strings, or use the urls alias.
urlsarrayArray of URLs to extract in parallel (max 10). Alias for url when passing multiple URLs. Use for batch research workflows extracting from several pages in one call. Returns a structured markdown docu…
wait_forstringCSS selector to wait for before capturing content (browser mode only). E.g. '.price', '#product-title'. Delays capture until the element appears in the DOM. Max wait: 15s.
wait_msintegerFixed ms to wait after page load before capturing (browser mode only). Prefer wait_for (CSS selector) when possible — more reliable. Fallback for pages with no stable selector. Max 30000ms.

No output schema declared.

No examples provided.

novada_ip_whitelist ~610

Manage the proxy IP whitelist — add/list/delete/remark — for Residential (1), Unlimited (4), and Static ISP (5). **Actions:** "add" (WRITE, gated by approval_token), "list" (read-only), "del" (WRITE, gated by approval_token), "remark" (WRITE, gated by approval_token). **Behavior for "add"/"del"/"remark":** call once WITHOUT `approval_token` to get a preview plus a fresh token (valid 10 minutes) — this does NOT hit the API. Re-call with the EXACT SAME parameters plus that token to execute. `confirm: true` is a deprecated no-op. **Required:** action, product (1=Residential, 4=Unlimited, 5=Static ISP). **Auth:** NOVADA_DEVELOPER_API_KEY (falls back to NOVADA_API_KEY).

NameTypeReqDescription
actionstringyesAction to perform. "add": add IP to whitelist (WRITE — requires approval_token). "list": list whitelisted IPs. "del": delete whitelisted IPs (WRITE — requires approval_token). "remark": update remark…
approval_tokenstringTwo-step approval token, required to execute "add"/"del"/"remark". Omit on the first call to receive a preview + a fresh approval_token (valid 10 minutes). Re-call with the EXACT SAME parameters plus…
confirmbooleanDEPRECATED — ignored. Setting this alone no longer authorizes WRITE actions ("add"/"del"/"remark") (closed 2026-09, finding F2-2: an agent could self-supply confirm:true with no prior human-reviewed…
end_timestringEnd datetime filter for action="list" (e.g. "2026-12-31").
idstringWhitelist entry ID (required for action="remark").
ipstringIP address to whitelist (required for action="add"). For action="list", optional filter by specific IP.
ipsstringComma-separated list of IPs to remove (required for action="del").
lockintegerLock filter for action="list". 0=Unlocked, 1=Locked.
productstringyesREQUIRED. Product type code as string: 1=Residential, 4=Unlimited, 5=Static ISP.
remarkstringOptional remark/note. Used by action="add" and action="remark".
start_timestringStart datetime filter for action="list" (e.g. "2026-01-01").

No output schema declared.

No examples provided.

novada_map ~176

Discover URLs on a site before deciding what to read. Tries sitemap.xml first (fast), falls back to BFS crawl. Returns URLs only — no content. Hard cap: 100 URLs. **Best for:** site structure discovery, finding the right subpage, pre-flight before novada_crawl/novada_extract. **Not for:** reading content (use novada_crawl/novada_extract) or copying a whole site to disk (novada_site_copy). **Note:** limited results on JS SPAs — flagged in the output.

NameTypeReqDescription
include_subdomainsboolean
limitinteger
max_depthintegerLink-hops from root to follow. Default 2. Higher = more pages found but slower.
searchstring
urlstringyes

No output schema declared.

No examples provided.

novada_monitor ~292

Detect changes on a web page over time. Extracts content, computes a hash, and compares it with the previous check. Returns changed/unchanged plus field-level diffs. **Use for:** e-commerce price monitoring, stock tracking, content-change detection, competitive pricing alerts. **How:** the first call sets a baseline; later calls compare against it and report changes. Pass fields=["price","availability"] for field-level % diffs. **Not for:** one-time extraction (novada_extract) or a full crawl (novada_crawl). ⚠️ **Hosted endpoint (mcp.novada.com) limitation:** baselines do NOT survive between calls on hosted's serverless runtime — every call is a cold function with no prior state, so change detection always returns baseline_recorded. Use the local server (`npx novada-mcp`) or diff externally for real change detection.

NameTypeReqDescription
fieldsarraySpecific fields to track for changes (e.g. ['price', 'availability', 'rating']). When provided, change detection focuses on these fields. Without fields, tracks full page content hash.
formatstringOutput format. 'markdown' (default): human-readable change report. 'json': structured object for programmatic agent use.
urlstringyesURL to monitor for changes. E.g. a product page, pricing page, or any content page.

No output schema declared.

No examples provided.

novada_proxy ~650

Route your own HTTP requests through residential or mobile IPs — geo-targeting, IP rotation, bypassing IP-based rate limits. Returns a proxy URL, shell exports, or a curl --proxy flag. **Best for:** a specific country/city IP, sticky multi-step sessions, testing geo-restricted content. **Not for:** page extraction (novada_extract — proxy is automatic) or web search (novada_search). **Formats:** "url" (Node.js/Python), "env" (shell vars), "curl" (CLI). **Requires:** NOVADA_PROXY_ENDPOINT env var; NOVADA_PROXY_USER/PASS auto-fetch from your account via NOVADA_API_KEY if unset. **`type` guide:** - `residential` — strongest anti-bot bypass, real home ISP IPs; escalate here when blocked - `isp` — looks like a home user; best for social/ecommerce; ignores country param - `datacenter` — fastest/cheapest; non-anti-bot, high-volume targets - `mobile` — 4G/5G device IPs; mobile-targeted content and app APIs - `static` — same dedicated ISP IP every request; set session_id + country explicitly for account-management workflows — omitting either silently falls back to a SHARED "default"/"us" identity, not an error - `dedicated` — exclusive datacenter IP; set session_id explicitly for high-trust platforms — omitting it silently falls back to a SHARED "default" identity, not an error **Escalation when blocked:** datacenter → isp → residential.

NameTypeReqDescription
citystringCity name for city-level targeting. Requires country to be set.
countrystringISO 2-letter country code (e.g. 'us','gb','de'). Omit for any country. NOTE: silently ignored when type='isp'.
formatstringOutput SHAPE of the returned proxy config — not a data content format. 'url': proxy URL string (default). 'env': shell export commands. 'curl': curl --proxy flag.
session_idstringSession ID for sticky routing — same session_id returns same IP across requests.
typestringProxy type. 'residential' for most anti-bot scenarios, 'mobile' for app automation, 'isp' for sticky sessions, 'datacenter' for high-volume/low-cost, 'static'/'dedicated' for a fixed IP — set session…
verifybooleanVerify the issued config with ONE live IP-echo request routed through the proxy (default true). Appends evidence — exit IP, org/ASN, country, latency — to the response; failures are classified (402 p…

No output schema declared.

No examples provided.

novada_proxy_account_create ~593

⚠️ WRITE — Create a proxy sub-account. Two-step approval-token gate. **Behavior:** call once WITHOUT `approval_token` to get a `confirmation_required` JSON preview (password masked) plus a fresh `approval_token` valid for 10 minutes — this does NOT hit the API. Show the preview to the human, then re-call with the EXACT SAME parameters plus that `approval_token` after explicit approval. `confirm: true` is a deprecated no-op and does NOT substitute for the token. **Best for:** provisioning a team-member or per-project sub-account against your master plan. **Params:** product ("1"=Residential, "2"=Rotating ISP, "3"=Rotating Datacenter, "4"=Unlimited, "7"=Unblocker, "9"=Mobile), account (3-64, [a-zA-Z0-9_-]), password (8-64), status ("1" active default | "-3" disabled), remark?, limit_flow? (GB cap), approval_token. **Wire format:** multipart/form-data. **Auth:** NOVADA_DEVELOPER_API_KEY (falls back to NOVADA_API_KEY).

NameTypeReqDescription
accountstringyesREQUIRED. Sub-account name. 3-64 chars, alphanumeric + underscore/hyphen only.
approval_tokenstringTwo-step approval token. Omit on the first call to receive a preview + a fresh approval_token (valid 10 minutes). Re-call with the EXACT SAME parameters plus this field set to that token to execute.…
confirmbooleanDEPRECATED — ignored. Setting this alone no longer authorizes execution (closed 2026-09, finding F2-2: an agent could self-supply confirm:true with no prior human-reviewed preview). Use approval_toke…
limit_flowstringOptional data cap in GB, as a string (e.g. "10" = 10 GB). Omit for no cap. Server expects string, not number.
passwordstringyesREQUIRED. Sub-account password. 8-64 chars. Will be sent to server in multipart body — caller decides storage.
productstringyesREQUIRED. Product type code as string: 1=Residential, 2=Rotating ISP, 3=Rotating Datacenter, 4=Unlimited, 7=Unblocker, 9=Mobile. Must match a product provisioned on the account.
remarkstringOptional note/label for this sub-account.
statusstringREQUIRED. Account status: "1" = active (default), "-3" = personal disabled.

No output schema declared.

No examples provided.

novada_proxy_account_list ~261

List proxy sub-accounts (wraps developer-api POST /v1/proxy_account/list). **Best for:** auditing sub-accounts, finding account names before rotating credentials. **Params:** product (REQUIRED — same codes as create), page, limit (max 200), status? ("1"|"-3"), account? (exact-match filter). **Wire format:** multipart/form-data. **Auth:** NOVADA_DEVELOPER_API_KEY (falls back to NOVADA_API_KEY).

NameTypeReqDescription
accountstringOptional filter — exact-match account name. (API field is `account`, not `username`.)
limitintegerEntries per page, max 200. (API field is `limit`, not `page_size`.)
pageinteger1-based page index.
productstringyesREQUIRED. Product type code as string: 1=Residential, 2=Rotating ISP, 3=Rotating Datacenter, 4=Unlimited, 7=Unblocker, 9=Mobile. Must match a product provisioned on the account.
statusstringOptional filter: "1" = active, "-3" = disabled. Omit for both.

No output schema declared.

No examples provided.

novada_research ~508

One call → 3-10 parallel searches across Google/Bing/DuckDuckGo → dedup → extracts full content from top sources → returns CITED SOURCE MATERIAL (numbered passages), not a written answer. Extractive, not generative — you compose the final answer from the gathered passages. **Use for:** complex questions needing passages from ≥3 independent sources in one call — comparative analysis, market research, technical deep dives, competitive intelligence. Replaces 5-10 manual search+extract calls. **Not for:** a single fact or one URL (novada_search — faster/cheaper), a known URL (novada_extract), or a finished prose report (this returns source material, not an answer). **Depth:** "quick" (3 queries), "deep" (6), "comprehensive" (8-9), "auto" (default — quick or deep by question length, never comprehensive). **Project grouping:** `project="my-project"` groups outputs under a subfolder. **Recency:** `time_range` ("day"|"week"|"month"|"year"), `start_date`/`end_date` (ISO YYYY-MM-DD) propagate to every internal search call.

NameTypeReqDescription
depthstring'quick'=3 searches, 'deep'=6, 'comprehensive'=8-9, 'auto' (default)=picks quick or deep by question length — never comprehensive.
end_datestringISO date YYYY-MM-DD. Return results published on or before this date.
focusstringOptional focus area to guide sub-query generation. E.g. 'technical implementation', 'business impact', 'recent news only'.
projectstringGroup outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted.
querystringREQUIRED — provide either `question` or `query`. Alias for `question` — use either.
questionstringREQUIRED — provide either `question` or `query`. The research question to answer (min 5 characters).
start_datestringISO date YYYY-MM-DD. Return results published on or after this date.
time_rangestringLimit results to a time window. 'day'=last 24h, 'week'=last 7 days, 'month'=last 30 days, 'year'=last 12 months.

No output schema declared.

No examples provided.

novada_scrape ~835

Use for structured data from a specific platform — clean tabular records, not raw HTML. Supports 16 platforms (~87 operations): Amazon, Walmart, SHEIN, Google (incl. Shopping), Bing, DuckDuckGo, Yandex, X/Twitter, TikTok, Instagram, Facebook, YouTube, LinkedIn, GitHub, ChatGPT, Perplexity. **Best for:** e-commerce product data, social posts/comments, job listings, reviews, real estate, market data. **Not for:** general web pages outside this platform list — use novada_extract instead. **Prefer the dedicated tool when one exists:** for amazon/google/bing/duckduckgo/yandex/youtube/instagram/facebook/tiktok/x/walmart/shein/linkedin/github/perplexity, call novada_scrape_<platform> instead — same engine, but its `operation` enum uses typed friendly names and is rejected client-side before any network call if wrong. Use THIS generic tool for platforms with no dedicated sibling (e.g. ChatGPT) or when resuming by task_id. **Output formats:** markdown (default table), json (records array inside a fenced "## Scrape Results" block), toon (pipe-separated, 40-65% smaller — best for large result sets), csv, excel (base64), html. **Example:** platform="amazon.com", operation="amazon_product_keywords", params={keyword:"iphone 16", num:5}. **Amazon price fields:** trust `final_price`/`price` (check `_price_source`) — `initial_price` and `buybox_prices.final_price` are often 0 by design, not a bug; `buybox_prices.unit_price` is raw per-unit data, never the listing price. **Discover platforms:** read the `novada://scraper-platforms` resource for the full operation list. **Resume:** pass `task_id` from a prior status:processing call to fetch the result without a new billable task (platform/operation still required, display-only). **Project grouping:** `project="my-project"` groups outputs under a subfolder.

NameTypeReqDescription
formatstring'markdown' (default): structured table. 'json': records array with key fields surfaced — returned inside a "## Scrape Results" wrapper as a fenced json block, NOT a bare object. 'csv': inline CSV, he…
limitintegerMax records to return. Default 20, max 100.
operationstringyesScraping operation ID. Examples: 'amazon_product_keywords', 'amazon_product_asin', 'tiktok_posts_url', 'linkedin_company_information_url', 'github_repository_repo-url', 'twitter_profile_username', 'y…
paramsobjectOperation-specific parameters. E.g. { keyword: 'iphone 16', num: 5 } for keyword search, { url: 'https://...' } for URL-based ops, { asin: 'B09...' } for ASIN lookup.
platformstringyesPlatform domain to scrape. E.g. 'amazon.com', 'walmart.com', 'tiktok.com', 'linkedin.com', 'google.com'.
projectstringGroup outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted.
task_idstringOptional. When provided, skips submitting a new scrape task and fetches the result of this existing task_id directly — no new billable task is created. Use this to resume a previous novada_scrape cal…

No output schema declared.

No examples provided.

novada_scrape_amazon ~637

Extract structured Amazon data — product details, reviews, seller info, bestseller lists, category/brand listings — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="amazon.com"). **Use when:** "get the price/rating/title for Amazon ASIN B0...", "pull the reviews for this Amazon product URL", "search Amazon for <keyword> with price and rating", "who is this Amazon seller", "what's in this Amazon Best Sellers list". **Not for:** Any other platform — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). A general Google/web search — use novada_search. Reading one arbitrary URL's raw content — use novada_extract. **Returns:** Structured product/review/seller records (title, price, rating, asin, availability, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 10 verified-working Amazon operations. 3 known backend-broken ones are excluded from this enum (rejected client-side before any backend call) — unlike novada_scrape(platform="amazon.com", ...), which still forwards them with a warning.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesAmazon operation to run (params keys per entry): - product_by_asin: params.asin (e.g. "B0BWBK8F37") - product_by_url: params.url (product page URL); optional params.zip_code - products_by_keywords: p…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { asin: "B0BWBK8F37" } for product_by_asin, { url: "https://www.amazon.com/dp/..." } for product_by_url/reviews_by_url/seller_by_url/b…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_bing ~641

Extract structured Bing SERP data — organic web search, video results, news results, shopping listings — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="bing.com"). Bing is NOT a selectable engine on novada_search — this is the only intentional way to query Bing specifically. **Use when:** "get the raw Bing search results (titles, links, ranks) for <query>", "find Bing video results for <query>", "find Bing news results for <query>, sorted by date", "search Bing Shopping for <keyword>". **Not for:** A general question needing just an answer or a few good links — use novada_search — google/duckduckgo/yandex only (Bing is not selectable there); ranked, cheaper than a raw-SERP scrape. A complex question needing cited multi-source synthesis — use novada_research. Reading one already-known URL's page content — use novada_extract. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured SERP records per operation — organic results (title/url/snippet/rank), video results, news results (with date), shopping listings (price/rating) — in the chosen output format, same rendering as novada_scrape. **Ops:** 4 verified-working Bing operations: web search, videos, news, and shopping. Every bing.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesBing operation to run (params keys per entry): - web_search: params.q (search query); optional params.device, params.country, params.lg (language), params.location, params.start, params.num, params.s…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { q: "wireless earbuds" } for web_search/videos/news/shopping; all four operations share the same q-driven query shape.
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_duckduckgo ~489

Extract structured DuckDuckGo web search SERP data via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="duckduckgo.com"). Returns the raw organic-results SERP, with region/time/adult-content filters novada_search does not expose, not a generated answer. **Use when:** "get the raw DuckDuckGo search results (titles, links, ranks) for <query>", "search DuckDuckGo restricted to a specific region (params.kl) or time range (params.df)", "compare DuckDuckGo's ranking for <query> against another engine's raw SERP". **Not for:** A general question needing just an answer or a few good links — use novada_search with engine="duckduckgo" (ranked/reranked instead of a raw SERP dump). A complex question needing cited multi-source synthesis — use novada_research. Reading one already-known URL's page content — use novada_extract. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured organic-result SERP records (title/url/snippet/rank) in the chosen output format, same rendering as novada_scrape. **Ops:** 1 verified-working DuckDuckGo operation (web search). The single duckduckgo.com catalog operation is currently status:"ok".

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesDuckDuckGo operation to run (params keys per entry): - web_search: params.q (search query); optional params.kl (region), params.start (results offset), params.df (time range: d/w/m/y), params.kp (adu…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { q: "wireless earbuds", kl: "us-en" } for web_search.
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_facebook ~542

Extract structured Facebook data — public profile pages, posts, comments, and events — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="facebook.com"). **Use when:** "get this public Facebook page's profile info", "pull the comments on this Facebook post", "get details for this Facebook event", "find events matching <query> on Facebook", "list the upcoming events on this Facebook page". **Not for:** A single Facebook URL to read as plain text — use novada_extract. A general web search not scoped to Facebook — use novada_search. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured profile/post/comment/event records (page name, post text, comment author/text, event name/date/location, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 6 verified-working Facebook operations spanning public profile pages, posts, comments, and events (search / single event / event list). Every facebook.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesFacebook operation to run (params keys per entry): - profile_by_url: params.url (personal/page homepage URL); optional params.file_name - events_by_search_url: params.url (an activity/events search U…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { url: "https://www.facebook.com/handle" } for profile_by_url/post_by_url/comments_by_post_url/event_by_url/events_by_list_url/events_…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_github ~607

Extract structured GitHub repository data — repository details by URL, or multiple repositories from a GitHub search-results URL — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="github.com"). **Use when:** "get repository info (stars, forks, description, language, etc.) for this GitHub repo URL", "get the repositories listed on this GitHub search-results URL". **Not for:** A single GitHub URL (repo, issue, PR, user) to read as plain text — use novada_extract. A general web/code search not scoped to GitHub, or a GitHub issue/PR/user lookup (no catalog operation exists for those) — use novada_search, or novada_extract for a known URL. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured repository records (name, description, stars, forks, language, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 3 verified-working GitHub operations: two repository-by-URL lookups (`repository_by_url` and `repository_details_by_url` map to distinct catalog scraper_ids — github_repository_repo-url and github_repository_url respectively — both taking the same `url` param; the catalog documents no behavioral difference between them) and repository listing from a GitHub search-results URL. Every github.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesGitHub operation to run (params keys per entry): - repository_by_url: params.url (repository URL, e.g. "https://github.com/gin-gonic/gin"); optional params.file_name - repository_details_by_url: para…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { url: "https://github.com/gin-gonic/gin" } for repository_by_url/repository_details_by_url, { search_url: "https://github.com/search?…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_google ~927

Extract structured Google SERP data — organic web search, AI Mode answers, Maps place/review details, Shopping, Jobs, Hotels, Videos — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="google.com"). Returns raw structured SERP records, not a generated answer. **Use when:** "get the raw Google search results (titles, links, ranks) for <query>", "what's in Google's AI Mode answer for <query>", "pull Google Maps reviews or place details for this URL / place_id / CID", "search Google Shopping for <keyword>", "find Google Jobs, Hotels, or Videos results for <query>". **Not for:** A general question needing just an answer or a few good links — use novada_search (multi-engine: google/duckduckgo/yandex, ranked/reranked, cheaper than a raw-SERP scrape). A complex question needing cited multi-source synthesis — use novada_research. Reading one already-known URL's page content — use novada_extract. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured SERP records per operation — organic results (title/url/snippet/rank), AI Mode answer content, Maps place details/reviews, Shopping listings (price/rating), Jobs/Hotels/Videos listings — in the chosen output format, same rendering as novada_scrape. **Ops:** 13 verified-working Google operations spanning web search, AI Mode, Maps (location/place_id/CID/URL lookups + reviews), Shopping, Jobs, Hotels, and Videos. Every google.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesGoogle operation to run (params keys per entry): - web_search: params.q (search query); optional params.domain, params.country, params.hl (language), params.location, params.start/params.num (paginat…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { q: "wireless earbuds" } for web_search/ai_mode, { keyword: "pizza" } for shopping, { url: "https://www.google.com/maps/place/..." }…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_instagram ~624

Extract structured Instagram data — profiles, posts, reels, and comments — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="instagram.com"). **Use when:** "get the latest posts from this Instagram profile", "pull the comments on this Instagram post or reel", "get details for this single Instagram post or reel URL", "get Instagram profile info by URL or username", "get the reels posted by this Instagram profile". **Not for:** A single Instagram URL to read as plain text — use novada_extract. A general web search not scoped to Instagram — use novada_search. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured profile/post/reel/comment records (username, follower count, caption, like count, comment author/text, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 7 verified-working Instagram operations spanning profile lookup (by URL or username), posts and reels (by profile or by direct URL), and comments. `posts_by_profile` requires BOTH `profileurl` AND `resultsLimit` together. Every instagram.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesInstagram operation to run (params keys per entry): - comments_by_post_url: params.posturl (post/reel URL); optional params.file_name - reels_by_profile_url: params.url (profile URL); optional params…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { posturl: "https://www.instagram.com/p/..." } for comments_by_post_url/post_by_url, { profileurl: "https://www.instagram.com/handle/"…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_linkedin ~725

Extract structured LinkedIn data — job listings (by location/filters, jobs search-results URL, or a single job posting URL) and company profile info by URL — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="linkedin.com"). **Use when:** "find LinkedIn job listings in <location> matching <keyword/level/remote/etc.>", "get all the job listings from this LinkedIn jobs search URL", "get details for this single LinkedIn job posting URL", "get company info for this LinkedIn company URL". **Not for:** A single LinkedIn URL to read as plain text — use novada_extract. A general web search not scoped to LinkedIn — use novada_search. A LinkedIn personal PROFILE (not a company or job) — no catalog operation exists for this today — use novada_extract on the profile URL, or novada_search. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured job-listing/company records (title, location, level, company name, follower count, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 4 verified-working LinkedIn operations spanning job search (by location, with optional keyword/level/remote/company filters), job listings from a search-results URL, a single job posting by URL, and company info by URL. `jobs_search` requires `params.location` — the catalog's actual required key for this op, despite its upstream name reading "By Keywords" (keyword itself is optional there). Every linkedin.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesLinkedIn operation to run (params keys per entry): - jobs_search: params.location (required, e.g. "Germany"); optional params.keyword, params.range (Any_time|Past_day|Past_week|Past_month), params.le…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { location: "Germany", keyword: "product manager" } for jobs_search, { listing_url: "https://www.linkedin.com/jobs/search?..." } for j…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_perplexity ~631

Extract the actual AI-generated answer Perplexity returns for a query — by a Perplexity query URL or a raw search term — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="perplexity.ai"). Scrapes Perplexity's own live-rendered answer page (the model's actual response text) — NOT a web search results list and NOT an indexed-page brand-mention scan. **Use when:** "what does Perplexity AI answer for <query>", "get Perplexity's generated answer for this perplexity.ai URL", "get Perplexity's answer for the search term <term>". **Not for:** A general web/multi-engine search for information (not Perplexity's own generated answer) — use novada_search. Checking whether a brand is mentioned on AI-company indexed public pages — use novada_ai_monitor — scans INDEXED PUBLIC PAGES for brand mentions across AI-company domains; does not fetch a live generated answer for an arbitrary query. A complex question needing cited, multi-source synthesis — use novada_research. Reading one already-known URL's raw page content — use novada_extract. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Perplexity's rendered answer content (the text of its generated response) in the chosen output format — same rendering as novada_scrape. **Ops:** 2 verified-working Perplexity operations: answer by a perplexity.ai query URL, or answer by a raw search term. Every perplexity.ai catalog operation is currently status:"ok" — unlike its sibling chatgpt.com, whose only 2 catalog operations are BOTH backend_broken (verified 2026-07-13, "submit hangs >120s") — which is why no novada_scrape_chatgpt tool exists.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesPerplexity AI operation to run (params keys per entry): - answer_by_url: params.url (a Perplexity AI query URL, e.g. "https://www.perplexity.ai/?q=apple"); optional params.file_name - answer_by_searc…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { url: "https://www.perplexity.ai/?q=apple" } for answer_by_url, { search_terms: "Today's weather" } for answer_by_search_term.
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_shein ~570

Extract structured SHEIN product data — product details by product ID or product URL — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="shein.com"). **Use when:** "get SHEIN product details for this product ID", "get SHEIN product details for this product URL". **Not for:** A single SHEIN URL to read as plain text — use novada_extract. A general web search not scoped to SHEIN — use novada_search. SHEIN keyword or category product-list search (no working operation exists for these today) — use novada_search, or novada_extract on a SHEIN category/search page URL — the 3 ops that would cover this are all backend_broken (60s+ submit hang) and deliberately excluded from this enum. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured product records (title, price, rating, images, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 2 verified-working SHEIN operations: product lookup by product ID or by product URL. 3 known backend_broken SHEIN operations — product-list by keyword, by category ID, and by category URL, all failing with a 60s+ submit-endpoint hang — are intentionally NOT in this enum; this tool rejects them before any backend call, unlike novada_scrape(platform="shein.com", ...), which still forwards them with a warning.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesSHEIN operation to run (params keys per entry): - product_by_id: params.ID (e.g. "Tween-Girls-Casual-Solid-Color-Criss-Cross-Racerback-Sports-Dress-Kids-p-423721658"); optional params.flow_retry_num,…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { ID: "Tween-Girls-...-p-423721658" } for product_by_id, { url: "https://us.shein.com/...html" } for product_by_url.
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_tiktok ~613

Extract structured TikTok data — profile info, post/video details, and post lists by profile, hashtag, or search URL — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="tiktok.com"). **Use when:** "get the latest posts from this TikTok profile", "get details for this single TikTok video URL", "pull TikTok profile info for this URL", "search TikTok profiles from this discover/search URL", "get posts from this TikTok hashtag/discover page". **Not for:** A single TikTok URL to read as plain text — use novada_extract. A general web search not scoped to TikTok — use novada_search. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured profile/post records (username, follower count, video description, likes, view count, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 5 verified-working TikTok operations: profile search by list URL, profile by URL, posts by list URL, posts by profile URL, and a single post by URL. Every tiktok.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesTikTok operation to run (params keys per entry): - profiles_by_search_url: params.search_url (a TikTok search/discover URL listing profiles); optional params.country, params.page_turning - profile_by…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { url: "https://www.tiktok.com/@handle" } for profile_by_url/posts_by_profile/post_by_url, { search_url: "https://www.tiktok.com/searc…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_walmart ~667

Extract structured Walmart data — product details by keyword search, category URL, SKU, zip-code-specific pricing, or direct product URL — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="walmart.com"). **Use when:** "search Walmart for <keyword> and give me prices/ratings", "get product listings from this Walmart category URL", "what's the price/availability for this Walmart SKU", "get this Walmart product's info for a specific zip code", "get product details for this Walmart product URL". **Not for:** A single Walmart URL to read as plain text — use novada_extract. A general web search not scoped to Walmart — use novada_search. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured product records (title, price, rating, availability, SKU, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 5 verified-working Walmart operations spanning keyword search, category-URL listings, SKU lookup, zip-code-specific pricing, and direct product URL. `product_by_keyword` requires BOTH `domain` AND `keyword` together; `product_by_category_url` requires ALL THREE of `category_url`, `all`, AND `page_limit` together; `product_by_url_and_zipcode` requires BOTH `url` AND `zipcode` together. Every walmart.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesWalmart operation to run (params keys per entry): - product_by_keyword: params.domain (e.g. "https://www.walmart.com/") AND params.keyword (BOTH required together); optional params.all, params.page_t…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { domain: "https://www.walmart.com/", keyword: "shoes" } for product_by_keyword, { sku: "433078517" } for product_by_sku, { url: "http…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_x ~507

Extract structured X (Twitter) data — a single post and profile lookups by username or URL — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="x.com"). **Use when:** "get the text/engagement stats for this X post URL", "get this X profile's info by username", "get this X profile's info by profile URL". **Not for:** A single X/Twitter URL to read as plain text — use novada_extract. A general web search not scoped to X — use novada_search. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured post/profile records (post text, like/reply/repost counts, profile bio, follower count, etc.) in the chosen output format — same rendering as novada_scrape. **Ops:** 3 verified-working X (Twitter) operations: a single post by URL, and profile lookup by username or by profile URL. Every x.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesX (Twitter) operation to run (params keys per entry): - post_by_url: params.post_url (e.g. "https://x.com/user/status/123..."); optional params.file_name - profile_by_username: params.user_name (e.g.…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { post_url: "https://x.com/user/status/123" } for post_by_url, { user_name: "BillGates" } for profile_by_username, { profile_url: "htt…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_yandex ~505

Extract structured Yandex web search SERP data via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="yandex.com"). Returns the raw organic-results SERP, with TLD/language/time-range controls novada_search does not expose, not a generated answer. **Use when:** "get the raw Yandex search results (titles, links, ranks) for <query>", "search a specific Yandex TLD (params.yandex_domain, e.g. "yandex.ru") for Russian/Eastern European content", "search Yandex restricted to a time range (params.within)". **Not for:** A general question needing just an answer or a few good links — use novada_search with engine="yandex" (ranked/reranked instead of a raw SERP dump). A complex question needing cited multi-source synthesis — use novada_research. Reading one already-known URL's page content — use novada_extract. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured organic-result SERP records (title/url/snippet/rank) in the chosen output format, same rendering as novada_scrape. **Ops:** 1 verified-working Yandex operation (web search, requires params.yandex_domain TLD selector). The single yandex.com catalog operation is currently status:"ok".

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesYandex operation to run (params keys per entry): - web_search: params.q (search query) and params.yandex_domain (Yandex TLD, e.g. "yandex.com", "yandex.ru"); optional params.lang, params.location, pa…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { q: "wireless earbuds", yandex_domain: "yandex.com" } for web_search.
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_scrape_youtube ~892

Extract structured YouTube data — video/channel metadata, transcripts, comments, downloadable video/audio files — via a closed, typed `operation` enum (same engine as novada_scrape, pinned to platform="youtube.com"). **Use when:** "get the transcript/subtitles for this YouTube video", "pull the comments on this YouTube video", "get channel info for this YouTube channel URL", "search YouTube channels for <keyword>", "find YouTube videos matching <keyword>, filtered by duration/upload date/attributes". **Not for:** A single YouTube URL to read as plain text — use novada_extract. A general web/video search not scoped to YouTube — use novada_search. A different platform's data — use its own novada_scrape_<platform> tool, or novada_scrape(platform="<domain>"). **Returns:** Structured video/channel/comment records (title, views, transcript text, comment author/text, channel subscriber count, etc.) plus downloadable video/audio file links, in the chosen output format — same rendering as novada_scrape. **Ops:** 13 verified-working YouTube operations spanning transcripts, video/audio downloads, channel lookup + search, comments, and video search by keyword/label/filters/playlist/channel. Every youtube.com catalog operation is currently status:"ok" — none are excluded for being backend_broken.

NameTypeReqDescription
formatstringmarkdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated).
limitintegerMax records (default 20, max 100).
operationstringyesYouTube operation to run (params keys per entry): - transcript_by_video: params.video_id (e.g. "LCAY3PGHZyw"); optional params.subtitles_language, params.subtitles_type (auto_generated|uploader_provi…
paramsobjectOperation-specific parameters for the selected `operation`. E.g. { video_id: "LCAY3PGHZyw" } for transcript_by_video/comments_by_video/video_by_id, { url: "https://www.youtube.com/watch?v=..." } for…
projectstringGroup outputs in a subfolder, e.g. 'competitor-pricing'.
task_idstringResume a previous slow task instead of submitting a new billable one.

No output schema declared.

No examples provided.

novada_search ~696

Search the web for clean, ready-to-use content — titles, URLs, snippets, reranked by relevance. For multi-source questions, use novada_research instead (faster, more thorough). **Use for:** current events, URL lookup, fact-checking, competitive research. enrich_top=true auto-extracts the #1 result. **Not for:** a known URL (novada_extract) or a multi-source report (novada_research). **Tip:** engine='google' (default) is fastest/most reliable; duckduckgo/yandex are slower fallbacks. **Domain filtering:** includeDomains/excludeDomains inject `site:domain` into the query (not API-side). **Project grouping:** `project="my-project"` groups outputs under a subfolder (~/Downloads/novada-mcp/<date>/<project>/).

NameTypeReqDescription
countrystring
end_datestringISO date YYYY-MM-DD. Return results published on or before this date.
enginestringSearch engine to use. 'google': best general relevance + fastest (default, recommended). 'duckduckgo': privacy-focused (markedly slower). 'yandex': Russian/Eastern European content.
enrich_topbooleanAuto-extract full content from the top result. Shorthand for extract_options.top_n=1. Adds ~2-4s latency. Default: false.
exclude_domainsarrayExclude results from these domains. E.g. ['reddit.com', 'quora.com']. Max 10.
exclude_socialbooleanWhen true, hard-drop social and press-release results (facebook, linkedin, x/twitter, instagram, tiktok, reddit, quora, medium, prnewswire, businesswire, globenewswire, prweb, einpresswire) from the…
extract_optionsobjectAuto-extracts content from the top top_n results and appends it — eliminates a separate novada_extract call. Adds latency proportional to top_n; use top_n=1-3 for most queries.
formatstringOutput format. 'markdown': human-readable (default). 'json': structured object for programmatic agent use.
include_domainsarrayOnly return results from these domains. E.g. ['github.com', 'arxiv.org']. Max 10.
languagestring
numinteger
projectstringGroup outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted.
querystringyes
source_typestringBias result authority. 'research'/'official': exclude social+PR domains, boost authoritative sources (*.gov, *.edu, arxiv.org, reuters.com, wikipedia.org). 'social': keep social results (no down-rank…
start_datestringISO date YYYY-MM-DD. Return results published on or after this date.
time_rangestringLimit results to a time window. 'day'=last 24h, 'week'=last 7 days, 'month'=last 30 days, 'year'=last 12 months.

No output schema declared.

No examples provided.

novada_search_feedback ~302

Record search-result quality so future ranking can learn from it. Returns a thank-you/echo confirmation with an agent_instruction. **Best for:** after a novada_search call, report which result URLs were useful and rate the set (good/ok/bad) — biases future ranking. **Params:** search_id (prior search's id), query, rating ('good'|'ok'|'bad'), useful_urls? (max 50), note? (what was missing). **Scope:** in-memory, per-process — resets on restart. Nothing persists. Auth-free.

NameTypeReqDescription
formatstringOutput format. 'markdown' (default): human-readable confirmation. 'json': structured object for programmatic agent use.
notestringOptional free-text note — what was missing, what would have ranked better, etc.
querystringyesThe query text that produced the results being rated.
ratingstringyesOverall quality of the result set. 'good': relevant + sufficient. 'ok': partially useful. 'bad': irrelevant or missing what you needed.
search_idstringyesThe id of the search this feedback is about. Use the search_id returned by a prior novada_search call (or any stable identifier you used for the query).
useful_urlsarrayURLs from the result set that were actually useful. Drives future ranking — list the results you clicked or cited. Max 50.

No output schema declared.

No examples provided.

novada_session_stats ~186

Per-process / per-session usage telemetry: tool-call counts, the last-N calls, and process uptime. **Best for:** "what have I called this session?" / debugging an agent loop / seeing which tools dominate usage. **Returns:** session_started, uptime, total_calls, per-tool counts (high→low), most-recent calls (newest first, capped by recent_limit). **Scope:** in-memory, per-process — resets on restart. Nothing persists or leaves the process. Auth-free.

NameTypeReqDescription
formatstringOutput format. 'markdown' (default): human-readable report. 'json': structured object for programmatic agent use.
recent_limitintegerHow many of the most-recent tool calls to include in the recent_calls list. Default 10, max 100. Counts and totals always cover the whole session regardless of this value.

No output schema declared.

No examples provided.

novada_setup ~260

The onboarding concierge and first-run front door. Call this FIRST when starting out, or whenever a tool reports a missing/invalid key. **What it does:** 1. **Validates your key** — one cheap account read (wallet balance) confirms it works and shows your balance. No per-product probes, no credit cost. 2. **Guides you if keyless** — register at the Novada dashboard (free credits included), copy your API key, get exact config snippets for Claude Code/Desktop/Cursor/VS Code/Windsurf. 3. **Orients you** — a plain-language list of core capabilities (search, extract, scrape, browser, account) plus add-ons. **Reports one of 3 states:** valid key (ready) · invalid key (fix it) · no key (register). Output includes server_version. **Auth-free by design:** a missing key never errors here — it guides, with a machine-usable agent_instruction for what to tell the user next. **Unified key:** NOVADA_API_KEY covers search/extract/unblock/scraper/research/crawl/map/browser/proxy auto-provisioning. NOVADA_BROWSER_WS/NOVADA_PROXY_ENDPOINT are optional add-ons needing no separate key.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

novada_site_copy ~573

Copy an entire docs site/section to disk as clean markdown — one .md file per page — returning a COMPACT manifest, not page bodies. Use for a whole knowledge base on disk (offline docs ingest, RAG corpus, full-site mirror). **Discovery order:** (1) llms.txt/llms-full.txt if present, (2) sitemap.xml, (3) scoped same-host BFS to completion. select_paths/exclude_paths and same-host are always enforced. **Best for:** "copy all of docs.x.com", a local docs corpus, ingesting an llms.txt index. **Not for:** a single page (novada_extract), a few pages inline (novada_crawl), URL discovery only (novada_map). **Output:** each page streams to `~/Downloads/novada-mcp/<date>/<project|domain>/site-copy/<slug>.md`; `manifest.json` records {url,file,title,word_count,depth,bytes,status} per page. The tool returns a compact summary + manifest path, not inline content — read the .md files or manifest.json after it completes. **Scale:** max_pages default 200, hard max 1000, drained until the queue is empty or the ceiling is hit.

NameTypeReqDescription
exclude_pathsarrayGlob patterns for URL paths to skip entirely. '*' matches within a path segment, '**' matches across segments. E.g. ['/blog/**', '/changelog/**'].
include_subdomainsbooleanWhen true, also copy pages on subdomains of the root host. Default false (same-host only).
max_depthintegerBFS link-hops from root when no llms.txt/sitemap is found. Default 5. Ignored for llms.txt/sitemap discovery (which is flat).
max_pagesintegerMaximum pages to copy. Default 200, hard max 1000. The run drains the in-scope queue until empty or this ceiling is hit — it is a safety bound, not a target.
projectstringOptional project name to group outputs under ~/Downloads/novada-mcp/<date>/<project>/site-copy/. Defaults to the site domain. (local stdio only; no effect on the hosted endpoint)
renderstringRendering mode for each page fetch. 'auto' (default): static, escalate to render on JS-heavy detection. 'static': always static. 'render': always render (slower).
select_pathsarrayGlob patterns to restrict copied URL paths. '*' matches within a path segment, '**' matches across segments, '?' matches one char. E.g. ['/docs/**', '/api/**']. Same-host is always enforced.
urlstringyes

No output schema declared.

No examples provided.

novada_static_ip_mgmt ~642

Manage static ISP IPs (wraps /v1/static_house/* developer-api endpoints). **Actions:** "open" = purchase new IPs (WRITE, gated by approval_token). "renew" = renew existing IPs (WRITE, gated by approval_token). "export"/"list" = read-only. **Behavior:** call "open"/"renew" once WITHOUT `approval_token` to get a preview plus a fresh token (valid 10 minutes) — this does NOT hit the API. Re-call with the EXACT SAME parameters plus that token to execute. `confirm: true` is a deprecated no-op. **Auth:** NOVADA_DEVELOPER_API_KEY (falls back to NOVADA_API_KEY).

NameTypeReqDescription
actionstringyesAction to perform. "open" = purchase new static IPs (WRITE, requires approval_token). "renew" = renew existing IPs (WRITE, requires approval_token). "export" = export filtered IP list. "list" = list…
approval_tokenstringTwo-step approval token, required to execute "open"/"renew". Omit on the first call to receive a preview + a fresh approval_token (valid 10 minutes). Re-call with the EXACT SAME parameters plus this…
confirmbooleanDEPRECATED — ignored. Setting this alone no longer authorizes "open"/"renew" execution (closed 2026-09, finding F2-2: an agent could self-supply confirm:true with no prior human-reviewed preview, inc…
durationstringRequired for "open" and "renew". Activation/renewal period: "week" or "month".
ip_typestringRequired for "open". IP type: "normal" (Standard) or "premium" (Premium).
is_auto_renewintegerAuto-renew filter for "list"/"export". 1=Yes, -1=No.
key_wordstringSearch filter for "list"/"export". Searches remarks, order number, or IP.
limitintegerEntries per page for "list" action. Default 50, max 200.
numintegerRequired for "open". Number of static IPs to activate.
pageintegerPage number for "list" action. Default 1.
regionstringRequired for "open". Area/region code. Also optional filter for "list" and "export".
renew_ip_liststringRequired for "renew". Comma-separated list of IPs to renew.
statusstringFilter for "list"/"export". ""=All, "1"=In use, "2"=Expired, "3"=Released.

No output schema declared.

No examples provided.

novada_verify ~155

Check whether a factual claim is supported by web sources. Runs 3 parallel searches (supporting, skeptical, fact-check angles) and returns a verdict: supported / unsupported / contested / insufficient_data. **Best for:** checking claims before citing them, cross-validating findings, detecting misinformation. **Not for:** open-ended questions (novada_research) or reading a specific URL (novada_extract). **Note:** signal-based (search balance), not definitive. Confidence 0–100 indicates certainty.

NameTypeReqDescription
claimstringyesThe factual claim to verify (min 10 chars)
contextstringOptional context to narrow the search (e.g. 'as of 2024', 'in the US')

No output schema declared.

No examples provided.

Common questions

What is the io.github.NovadaLabs/novada-mcp server?

io.github.NovadaLabs/novada-mcp is listed in the public MCP registry as io.github.NovadaLabs/novada-mcp. Search, extract, crawl, map, research, scrape 16 platforms, browser automation, proxy, one API key. This page covers its npm package (novada-mcp).

Is the io.github.NovadaLabs/novada-mcp server safe to use?

io.github.NovadaLabs/novada-mcp scores 67 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.NovadaLabs/novada-mcp server expose?

io.github.NovadaLabs/novada-mcp exposes 38 tools: novada_search, novada_extract, novada_crawl, novada_research, novada_map, and 33 more. Their descriptions and schemas cost roughly 20,334 tokens of context every time the server is loaded.

Is the io.github.NovadaLabs/novada-mcp server still maintained?

io.github.NovadaLabs/novada-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.NovadaLabs/novada-mcp server under?

io.github.NovadaLabs/novada-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.