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.
Available components
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 9 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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.
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
claude mcp add novadalabs-novada-mcp -- npx -y novada-mcp
{
"mcpServers": {
"novadalabs-novada-mcp": {
"command": "npx",
"args": [
"-y",
"novada-mcp"
]
}
}
} {
"servers": {
"novadalabs-novada-mcp": {
"command": "npx",
"args": [
"-y",
"novada-mcp"
]
}
}
} codex mcp add novadalabs-novada-mcp -- npx -y novada-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"novadalabs-novada-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"novada-mcp"
],
"enabled": true
}
}
} openclaw mcp add novadalabs-novada-mcp --command npx --arg -y --arg novada-mcp
mcp_servers:
novadalabs-novada-mcp:
command: "npx"
args: ["-y", "novada-mcp"] {
"McpServers": {
"novadalabs-novada-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"novada-mcp"
]
}
}
} assistant mcp add novadalabs-novada-mcp -t stdio -c npx -a -y novada-mcp
{
"mcpServers": {
"novadalabs-novada-mcp": {
"command": "npx",
"args": [
"-y",
"novada-mcp"
]
}
}
} 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.
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 →
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 →
novada_account Account & Billing ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| end_time | string | – | Inclusive end date YYYY-MM-DD (usage/traffic sections only). |
| format | string | – | Output 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… |
| page | integer | – | 1-based page index (usage section only). |
| page_size | integer | – | Page size, max 200 (usage section only). |
| products | array | – | Subset of products to query (plans/traffic sections only). plans: residential|isp|mobile|datacenter|static|capture. traffic: residential|isp|mobile|datacenter|static. |
| section | string | – | Which 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_time | string | – | Inclusive start date YYYY-MM-DD (usage/traffic sections only). |
No output schema declared.
No examples provided.
novada_ai_monitor AI Brand 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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | yes | Brand or product name to search for on AI-company public web domains. E.g. 'novada', 'firecrawl', 'stripe'. |
| models | array | – | Domain 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… |
| topics | array | – | Topic 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 Browser Automation ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Array 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"} |… |
| country | string | – | ISO 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_id | string | – | Optional 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… |
| timeout | integer | – | Total timeout for all actions in ms. Default 60000. |
No output schema declared.
No examples provided.
novada_browser_flow Browser Flow Automation ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Ordered sequence of browser actions to execute. Each action has a type and optional selector/value/delay. |
| country | string | – | Optional 2-letter ISO 3166-1 country code for geo-targeting the browser session (e.g. 'us', 'gb', 'de'). |
| session_id | string | – | Optional 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… |
| url | string | yes | The 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 Capture API Key ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to perform. 'get': retrieve the current capture/scraper API key (read-only). 'reset': regenerate the API key — DESTRUCTIVE, invalidates the old key. |
| approval_token | string | – | Two-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… |
| confirm | boolean | – | DEPRECATED — 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 Site Crawler ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_paths | array | – | Glob patterns for URL paths to skip entirely. '*' matches within a path segment, '**' matches across segments. E.g. ['/blog/**', '/changelog/**']. |
| format | string | – | Output format. 'markdown': human-readable (default). 'json': structured object for programmatic agent use. |
| instructions | string | – | Natural 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_pages | integer | – | – |
| render | string | – | Rendering mode. 'auto': uses static, escalates to render on first JS-heavy page detection. 'static': always static. 'render': always render (slower, handles JS sites). |
| select_paths | array | – | Glob patterns to restrict crawled URL paths. '*' matches within a path segment, '**' matches across segments, '?' matches one char. E.g. ['/docs/**', '/api/**']. |
| strategy | string | – | Crawl 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,… |
| url | string | yes | – |
No output schema declared.
No examples provided.
novada_discover Tool Discovery ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Optional category filter. One of: 'Content Retrieval', 'Scraping & Verification', 'Proxy', 'Browser & Rendering', 'Account & Billing', 'Health & Discovery'. Omit to list all tools. |
| platform | string | – | Optional 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 Content Extractor ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| clean | boolean | – | Set true to extract only main article content (strips nav, footer, ads). Default false returns full page markdown for maximum content coverage. |
| country | string | – | ISO 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… |
| fields | array | – | Specific fields to extract (e.g. ['price','author','availability','rating']). ADVISORY/confidence-gated: each returns {value, source, confidence}. Source priority: JSON-LD → infobox/table/microdata →… |
| format | string | – | Output 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_chars | integer | – | Maximum characters to return (default 25000, max 100000). Truncated content emits content_truncated:true + total_chars. Raise only when you need the full page. |
| project | string | – | Group outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted. |
| query | string | – | Optional query for relevance context. Helps the calling agent focus on relevant sections. |
| render | string | – | Rendering 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… |
| url | – | yes | URL 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. |
| urls | array | – | Array 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_for | string | – | CSS 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_ms | integer | – | Fixed 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 IP Whitelist Manager ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action 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_token | string | – | Two-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… |
| confirm | boolean | – | DEPRECATED — 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_time | string | – | End datetime filter for action="list" (e.g. "2026-12-31"). |
| id | string | – | Whitelist entry ID (required for action="remark"). |
| ip | string | – | IP address to whitelist (required for action="add"). For action="list", optional filter by specific IP. |
| ips | string | – | Comma-separated list of IPs to remove (required for action="del"). |
| lock | integer | – | Lock filter for action="list". 0=Unlocked, 1=Locked. |
| product | string | yes | REQUIRED. Product type code as string: 1=Residential, 4=Unlimited, 5=Static ISP. |
| remark | string | – | Optional remark/note. Used by action="add" and action="remark". |
| start_time | string | – | Start datetime filter for action="list" (e.g. "2026-01-01"). |
No output schema declared.
No examples provided.
novada_map URL Mapper ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_subdomains | boolean | – | – |
| limit | integer | – | – |
| max_depth | integer | – | Link-hops from root to follow. Default 2. Higher = more pages found but slower. |
| search | string | – | – |
| url | string | yes | – |
No output schema declared.
No examples provided.
novada_monitor Page Change 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.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | Specific 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. |
| format | string | – | Output format. 'markdown' (default): human-readable change report. 'json': structured object for programmatic agent use. |
| url | string | yes | URL to monitor for changes. E.g. a product page, pricing page, or any content page. |
No output schema declared.
No examples provided.
novada_proxy Proxy Credentials ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | – | City name for city-level targeting. Requires country to be set. |
| country | string | – | ISO 2-letter country code (e.g. 'us','gb','de'). Omit for any country. NOTE: silently ignored when type='isp'. |
| format | string | – | Output 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_id | string | – | Session ID for sticky routing — same session_id returns same IP across requests. |
| type | string | – | Proxy 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… |
| verify | boolean | – | Verify 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | REQUIRED. Sub-account name. 3-64 chars, alphanumeric + underscore/hyphen only. |
| approval_token | string | – | Two-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.… |
| confirm | boolean | – | DEPRECATED — 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_flow | string | – | Optional data cap in GB, as a string (e.g. "10" = 10 GB). Omit for no cap. Server expects string, not number. |
| password | string | yes | REQUIRED. Sub-account password. 8-64 chars. Will be sent to server in multipart body — caller decides storage. |
| product | string | yes | REQUIRED. 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. |
| remark | string | – | Optional note/label for this sub-account. |
| status | string | – | REQUIRED. Account status: "1" = active (default), "-3" = personal disabled. |
No output schema declared.
No examples provided.
novada_proxy_account_list 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).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Optional filter — exact-match account name. (API field is `account`, not `username`.) |
| limit | integer | – | Entries per page, max 200. (API field is `limit`, not `page_size`.) |
| page | integer | – | 1-based page index. |
| product | string | yes | REQUIRED. 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. |
| status | string | – | Optional filter: "1" = active, "-3" = disabled. Omit for both. |
No output schema declared.
No examples provided.
novada_research Deep 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.
| Name | Type | Req | Description |
|---|---|---|---|
| depth | string | – | 'quick'=3 searches, 'deep'=6, 'comprehensive'=8-9, 'auto' (default)=picks quick or deep by question length — never comprehensive. |
| end_date | string | – | ISO date YYYY-MM-DD. Return results published on or before this date. |
| focus | string | – | Optional focus area to guide sub-query generation. E.g. 'technical implementation', 'business impact', 'recent news only'. |
| project | string | – | Group outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted. |
| query | string | – | REQUIRED — provide either `question` or `query`. Alias for `question` — use either. |
| question | string | – | REQUIRED — provide either `question` or `query`. The research question to answer (min 5 characters). |
| start_date | string | – | ISO date YYYY-MM-DD. Return results published on or after this date. |
| time_range | string | – | Limit 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 Platform Scraper ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | '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… |
| limit | integer | – | Max records to return. Default 20, max 100. |
| operation | string | yes | Scraping operation ID. Examples: 'amazon_product_keywords', 'amazon_product_asin', 'tiktok_posts_url', 'linkedin_company_information_url', 'github_repository_repo-url', 'twitter_profile_username', 'y… |
| params | object | – | Operation-specific parameters. E.g. { keyword: 'iphone 16', num: 5 } for keyword search, { url: 'https://...' } for URL-based ops, { asin: 'B09...' } for ASIN lookup. |
| platform | string | yes | Platform domain to scrape. E.g. 'amazon.com', 'walmart.com', 'tiktok.com', 'linkedin.com', 'google.com'. |
| project | string | – | Group outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted. |
| task_id | string | – | Optional. 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Amazon 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… |
| params | object | – | Operation-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… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_bing 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Bing 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… |
| params | object | – | Operation-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. |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_duckduckgo 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".
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | DuckDuckGo 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… |
| params | object | – | Operation-specific parameters for the selected `operation`. E.g. { q: "wireless earbuds", kl: "us-en" } for web_search. |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_facebook 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Facebook 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… |
| params | object | – | Operation-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_… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_github 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | GitHub 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… |
| params | object | – | Operation-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?… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_google 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Google 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… |
| params | object | – | Operation-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/..." }… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_instagram 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Instagram 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… |
| params | object | – | Operation-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/"… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_linkedin 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | LinkedIn 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… |
| params | object | – | Operation-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… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_perplexity Scrape Perplexity AI ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Perplexity 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… |
| params | object | – | Operation-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. |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_shein 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | SHEIN 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,… |
| params | object | – | Operation-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. |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_tiktok 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | TikTok 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… |
| params | object | – | Operation-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… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_walmart 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Walmart 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… |
| params | object | – | Operation-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… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_x 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | X (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.… |
| params | object | – | Operation-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… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_yandex 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".
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | Yandex 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… |
| params | object | – | Operation-specific parameters for the selected `operation`. E.g. { q: "wireless earbuds", yandex_domain: "yandex.com" } for web_search. |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_scrape_youtube 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default table), json (records array), csv/excel/html (spreadsheet), toon (compact pipe-separated). |
| limit | integer | – | Max records (default 20, max 100). |
| operation | string | yes | YouTube 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… |
| params | object | – | Operation-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… |
| project | string | – | Group outputs in a subfolder, e.g. 'competitor-pricing'. |
| task_id | string | – | Resume a previous slow task instead of submitting a new billable one. |
No output schema declared.
No examples provided.
novada_search Web 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>/).
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | – |
| end_date | string | – | ISO date YYYY-MM-DD. Return results published on or before this date. |
| engine | string | – | Search engine to use. 'google': best general relevance + fastest (default, recommended). 'duckduckgo': privacy-focused (markedly slower). 'yandex': Russian/Eastern European content. |
| enrich_top | boolean | – | Auto-extract full content from the top result. Shorthand for extract_options.top_n=1. Adds ~2-4s latency. Default: false. |
| exclude_domains | array | – | Exclude results from these domains. E.g. ['reddit.com', 'quora.com']. Max 10. |
| exclude_social | boolean | – | When 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_options | object | – | Auto-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. |
| format | string | – | Output format. 'markdown': human-readable (default). 'json': structured object for programmatic agent use. |
| include_domains | array | – | Only return results from these domains. E.g. ['github.com', 'arxiv.org']. Max 10. |
| language | string | – | – |
| num | integer | – | – |
| project | string | – | Group outputs in a subfolder, e.g. 'france-vs-norway'. Local stdio only — no effect on hosted. |
| query | string | yes | – |
| source_type | string | – | Bias 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_date | string | – | ISO date YYYY-MM-DD. Return results published on or after this date. |
| time_range | string | – | Limit 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Output format. 'markdown' (default): human-readable confirmation. 'json': structured object for programmatic agent use. |
| note | string | – | Optional free-text note — what was missing, what would have ranked better, etc. |
| query | string | yes | The query text that produced the results being rated. |
| rating | string | yes | Overall quality of the result set. 'good': relevant + sufficient. 'ok': partially useful. 'bad': irrelevant or missing what you needed. |
| search_id | string | yes | The 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_urls | array | – | URLs 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Output format. 'markdown' (default): human-readable report. 'json': structured object for programmatic agent use. |
| recent_limit | integer | – | How 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 Setup & Configuration ~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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_paths | array | – | Glob patterns for URL paths to skip entirely. '*' matches within a path segment, '**' matches across segments. E.g. ['/blog/**', '/changelog/**']. |
| include_subdomains | boolean | – | When true, also copy pages on subdomains of the root host. Default false (same-host only). |
| max_depth | integer | – | BFS link-hops from root when no llms.txt/sitemap is found. Default 5. Ignored for llms.txt/sitemap discovery (which is flat). |
| max_pages | integer | – | Maximum 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. |
| project | string | – | Optional 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) |
| render | string | – | Rendering mode for each page fetch. 'auto' (default): static, escalate to render on JS-heavy detection. 'static': always static. 'render': always render (slower). |
| select_paths | array | – | Glob 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. |
| url | string | yes | – |
No output schema declared.
No examples provided.
novada_static_ip_mgmt Static IP Manager ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action 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_token | string | – | Two-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… |
| confirm | boolean | – | DEPRECATED — 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… |
| duration | string | – | Required for "open" and "renew". Activation/renewal period: "week" or "month". |
| ip_type | string | – | Required for "open". IP type: "normal" (Standard) or "premium" (Premium). |
| is_auto_renew | integer | – | Auto-renew filter for "list"/"export". 1=Yes, -1=No. |
| key_word | string | – | Search filter for "list"/"export". Searches remarks, order number, or IP. |
| limit | integer | – | Entries per page for "list" action. Default 50, max 200. |
| num | integer | – | Required for "open". Number of static IPs to activate. |
| page | integer | – | Page number for "list" action. Default 1. |
| region | string | – | Required for "open". Area/region code. Also optional filter for "list" and "export". |
| renew_ip_list | string | – | Required for "renew". Comma-separated list of IPs to renew. |
| status | string | – | Filter for "list"/"export". ""=All, "1"=In use, "2"=Expired, "3"=Released. |
No output schema declared.
No examples provided.
novada_verify Fact Verification ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| claim | string | yes | The factual claim to verify (min 10 chars) |
| context | string | – | Optional context to narrow the search (e.g. 'as of 2024', 'in the US') |
No output schema declared.
No examples provided.
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.