Web data for agents. Extract web pages, crawl websites, discover URLs, and search the web.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Geonode API key. Optional: without it only extract is available, with anonymous limits.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Start an asynchronous batch extraction job from an explicit list of URLs. Supports HTML and Markdown output formats, optional JavaScript rendering, proxy settings, custom headers, and the grouped wait_config browser wait policy. Omit wait_config or set it to null to keep adaptive browser settling for child extractions; send {} or concrete values to opt every child extraction into explicit mode. Returns a job ID that can be polled with the 'batch_status' tool. Requires a Geonode API key, sent as the X-Api-Key header.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Start an asynchronous batch extraction job from an explicit list of URLs. Supports HTML and Markdown output formats, optional JavaScript rendering, proxy settings, custom headers, and the grouped wait_config browser wait policy. Omit wait_config or set it to null to keep adaptive browser settling for child extractions; send {} or concrete values to opt every child extraction into explicit mode. Returns a job ID that can be polled with the 'batch_status' tool. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| api_key | any | |
| batch_request* | any |
{
"type": "object",
"$defs": {
"ProxyType": {
"enum": [
"datacenter",
"residential",
"mix"
],
"type": "string",
"title": "ProxyType"
},
"WaitUntil": {
"enum": [
"commit",
"domcontentloaded",
"load",
"networkidle"
],
"type": "string",
"title": "WaitUntil"
},
"WaitConfig": {
"type": "object",
"title": "WaitConfig",
"properties": {
"wait_for": {
"anyOf": [
{
"type": "string",
"maxLength": 4096
},
{
"type": "null"
}
],
"title": "Wait For",
"default": null,
"description": "CSS selector or XPath expression to wait for before extracting the DOM. At least one matching element must become attached to the DOM for the wait to succeed. XPath expressions must start with `//` or `xpath=`; anything else is treated as a CSS selector. Applied after wait_until."
},
"wait_until": {
"anyOf": [
{
"$ref": "#/$defs/WaitUntil"
},
{
"type": "null"
}
],
"default": null,
"description": "Playwright page lifecycle event to wait for during navigation, before the selector wait or explicit delay. Accepted values: `commit` — response headers received and navigation committed; `domcontentloaded` — HTML parsed and DOM ready (no sub-resources); `load` — page and all sub-resources (images, scripts) fully loaded; `networkidle` — no network activity for 500 ms. When omitted, defaults to `domcontentloaded`."
},
"wait_timeout": {
"anyOf": [
{
"type": "integer",
"maximum": 30000,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Wait Timeout",
"default": null,
"description": "Deliberate pause in milliseconds inserted after wait_for resolves (or immediately after wait_until when wait_for is omitted), before the DOM is captured. Use to allow late-settling JavaScript to finish rendering. Range: 0–30 000 ms."
}
},
"description": "Explicit browser wait policy applied in order: wait_until → wait_for → wait_timeout.\nWhen a non-null WaitConfig is provided, the adaptive default settle phase is skipped\nand the caller owns the full wait sequence. Null fields inside the object are treated\nthe same as absence of that field."
},
"BatchRequest": {
"type": "object",
"title": "BatchRequest",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"title": "Urls",
"maxItems": 1000,
"minItems": 1,
"description": "URLs to extract in one batch"
},
"proxy": {
"$ref": "#/$defs/ProxySettings",
"description": "Proxy configuration"
},
"formats": {
"type": "array",
"items": {
"$ref": "#/$defs/OutputFormat"
},
"title": "Formats",
"default": [
"markdown"
],
"description": "Output formats to return"
},
"headers": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Headers",
"default": null,
"description": "Custom HTTP headers to include in extraction requests. `Host` and `:authority` are dropped: the target host always comes from each item's URL"
},
"render_js": {
"type": "boolean",
"title": "Render Js",
"default": false,
"description": "If true, uses a headless browser to render the page for every batch item"
},
"wait_config": {
"anyOf": [
{
"$ref": "#/$defs/WaitConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Grouped browser wait policy applied to every batch item. Optional — when omitted or explicitly `null`, each child extraction uses the adaptive default settle policy whenever a browser runs. Send an object to opt every child extraction into caller-owned explicit wait mode, which skips the adaptive default settle phase. Only non-null wait_config values count as provided; null fields inside wait_config behave the same as absence. If render_js is not set explicitly, any non-null wait_config value auto-enables browser rendering for the workflow and the effective render_js value is returned in batch_config. If you explicitly send render_js=false together with non-null wait_config values, the request is rejected as ambiguous."
},
"ignore_invalid_urls": {
"type": "boolean",
"title": "Ignore Invalid Urls",
"default": true,
"description": "If true, invalid URLs are skipped and returned in invalid_urls instead of failing the request"
}
}
},
"OutputFormat": {
"enum": [
"markdown",
"html"
],
"type": "string",
"title": "OutputFormat"
},
"ProxySettings": {
"type": "object",
"title": "ProxySettings",
"properties": {
"type": {
"$ref": "#/$defs/ProxyType",
"default": "residential",
"description": "Type of proxy to use (datacenter or residential). Defaults to 'residential' when omitted."
},
"country": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Z]{2}$"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "ISO 3166-1 alpha-2 country code for geo-targeting (e.g., 'US', 'GB'). Codes that are not backed by a geo-targeted proxy pool are rejected rather than silently ignored. If null, the server auto-resolves a country from the target URL (domain/path overrides first, then the TLD). If no country can be inferred, the upstream proxy provider picks the exit region."
}
}
}
},
"title": "batchArguments",
"required": [
"batch_request"
],
"properties": {
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"batch_request": {
"$ref": "#/$defs/BatchRequest"
}
}
}Retrieve the status and paginated results of a batch extraction job by its job ID. Returns item counts, invalid URLs, and the current page of per-URL extraction results. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| job_id* | string | |
| api_key | any | |
| page_size | integer |
{
"type": "object",
"title": "get_batch_resultArguments",
"required": [
"job_id"
],
"properties": {
"page": {
"type": "integer",
"title": "Page",
"default": 1
},
"job_id": {
"type": "string",
"title": "Job Id"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 10
}
}
}Cancel a batch job by its job ID. Stops scheduling new batch items while allowing in-flight child extractions to drain. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | |
| api_key | any |
{
"type": "object",
"title": "cancel_batchArguments",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"title": "Job Id"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
}
}
}Cancel a crawl job by its job ID. Stops scheduling new crawl pages while allowing in-flight page work to drain. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | |
| api_key | any |
{
"type": "object",
"title": "cancel_crawlArguments",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"title": "Job Id"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
}
}
}Start a website crawl job from a seed URL. Crawls pages breadth-first (BFS) up to the 'depth' parameter (BFS levels from the seed) and the 'limit' parameter (maximum number of pages to crawl). Supports Markdown and HTML output formats, optional JavaScript rendering, proxy geo-targeting, domain filtering, and the grouped wait_config browser wait policy. Omit wait_config or set it to null to keep adaptive browser settling for page extractions; send {} or concrete values to opt every page extraction into explicit mode. Returns a job ID that can be polled with the 'crawl_status' tool. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| api_key | any | |
| crawl_request* | any |
{
"type": "object",
"$defs": {
"ProxyType": {
"enum": [
"datacenter",
"residential",
"mix"
],
"type": "string",
"title": "ProxyType"
},
"WaitUntil": {
"enum": [
"commit",
"domcontentloaded",
"load",
"networkidle"
],
"type": "string",
"title": "WaitUntil"
},
"WaitConfig": {
"type": "object",
"title": "WaitConfig",
"properties": {
"wait_for": {
"anyOf": [
{
"type": "string",
"maxLength": 4096
},
{
"type": "null"
}
],
"title": "Wait For",
"default": null,
"description": "CSS selector or XPath expression to wait for before extracting the DOM. At least one matching element must become attached to the DOM for the wait to succeed. XPath expressions must start with `//` or `xpath=`; anything else is treated as a CSS selector. Applied after wait_until."
},
"wait_until": {
"anyOf": [
{
"$ref": "#/$defs/WaitUntil"
},
{
"type": "null"
}
],
"default": null,
"description": "Playwright page lifecycle event to wait for during navigation, before the selector wait or explicit delay. Accepted values: `commit` — response headers received and navigation committed; `domcontentloaded` — HTML parsed and DOM ready (no sub-resources); `load` — page and all sub-resources (images, scripts) fully loaded; `networkidle` — no network activity for 500 ms. When omitted, defaults to `domcontentloaded`."
},
"wait_timeout": {
"anyOf": [
{
"type": "integer",
"maximum": 30000,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Wait Timeout",
"default": null,
"description": "Deliberate pause in milliseconds inserted after wait_for resolves (or immediately after wait_until when wait_for is omitted), before the DOM is captured. Use to allow late-settling JavaScript to finish rendering. Range: 0–30 000 ms."
}
},
"description": "Explicit browser wait policy applied in order: wait_until → wait_for → wait_timeout.\nWhen a non-null WaitConfig is provided, the adaptive default settle phase is skipped\nand the caller owns the full wait sequence. Null fields inside the object are treated\nthe same as absence of that field."
},
"CrawlRequest": {
"type": "object",
"title": "CrawlRequest",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"format": "uri",
"minLength": 1,
"description": "Seed URL to start crawling from"
},
"depth": {
"type": "integer",
"title": "Depth",
"default": 2,
"maximum": 10,
"minimum": 1,
"description": "Maximum BFS depth from the seed URL (1 = seed only)"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 10000,
"minimum": 1,
"description": "Maximum number of pages to crawl"
},
"proxy": {
"anyOf": [
{
"$ref": "#/$defs/ProxySettings"
},
{
"type": "null"
}
],
"default": {
"type": "residential",
"country": null
},
"description": "Proxy configuration for page requests. Optional — when omitted or explicitly `null`, defaults are applied per page: residential type, country auto-resolved from each page URL (domain/path overrides first, then the TLD; if nothing matches, the upstream proxy provider picks the exit region). Send an object to override either field; individual fields inside the object may also be null (see ProxySettings)."
},
"formats": {
"type": "array",
"items": {
"$ref": "#/$defs/OutputFormat"
},
"title": "Formats",
"default": [
"markdown"
],
"description": "Output formats to extract per page"
},
"render_js": {
"type": "boolean",
"title": "Render Js",
"default": false,
"description": "Use a headless browser to render each page (slower, handles JS-heavy sites)"
},
"wait_config": {
"anyOf": [
{
"$ref": "#/$defs/WaitConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Grouped browser wait policy applied to every crawled page extraction. Optional — when omitted or explicitly `null`, each page extraction uses the adaptive default settle policy whenever a browser runs. Send an object to opt every page extraction into caller-owned explicit wait mode, which skips the adaptive default settle phase. Only non-null wait_config values count as provided; null fields inside wait_config behave the same as absence. If render_js is not set explicitly, any non-null wait_config value auto-enables browser rendering for the workflow and the effective render_js value is returned in crawl_config. If you explicitly send render_js=false together with non-null wait_config values, the request is rejected as ambiguous."
},
"same_domain_only": {
"type": "boolean",
"title": "Same Domain Only",
"default": true,
"description": "Only follow links that stay on the same domain as the seed URL"
},
"include_subdomains": {
"type": "boolean",
"title": "Include Subdomains",
"default": false,
"description": "When same_domain_only is true, also include subdomains of the seed domain"
}
}
},
"OutputFormat": {
"enum": [
"markdown",
"html"
],
"type": "string",
"title": "OutputFormat"
},
"ProxySettings": {
"type": "object",
"title": "ProxySettings",
"properties": {
"type": {
"$ref": "#/$defs/ProxyType",
"default": "residential",
"description": "Type of proxy to use (datacenter or residential). Defaults to 'residential' when omitted."
},
"country": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Z]{2}$"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "ISO 3166-1 alpha-2 country code for geo-targeting (e.g., 'US', 'GB'). Codes that are not backed by a geo-targeted proxy pool are rejected rather than silently ignored. If null, the server auto-resolves a country from the target URL (domain/path overrides first, then the TLD). If no country can be inferred, the upstream proxy provider picks the exit region."
}
}
}
},
"title": "crawlArguments",
"required": [
"crawl_request"
],
"properties": {
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"crawl_request": {
"$ref": "#/$defs/CrawlRequest"
}
}
}Retrieve the status and results of a crawl job by its job ID. Returns the current status (queued, running, completed, or failed), page counts, and once completed, the crawled page results with extracted content. Results are paginated; use 'page' and 'page_size' to navigate. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| job_id* | string | |
| api_key | any | |
| page_size | integer |
{
"type": "object",
"title": "get_crawl_resultArguments",
"required": [
"job_id"
],
"properties": {
"page": {
"type": "integer",
"title": "Page",
"default": 1
},
"job_id": {
"type": "string",
"title": "Job Id"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 10
}
}
}Extract content from a web page. Supports HTML and Markdown output formats, optional JavaScript rendering via headless browser, proxy geo-targeting, custom HTTP headers, and explicit browser wait controls via the wait_config object. Can run synchronously (returns content immediately) or asynchronously (returns a job ID that can be polled with the 'job' tool). Use 'render_js=true' for pages that require JavaScript to load their content; supplying wait_config also enables browser rendering automatically. Omit wait_config or set it to null to keep the adaptive browser settle path; send {} or concrete values to opt into explicit mode. Without an API key, extraction is synchronous only, without JavaScript rendering or request headers other than Accept-Language, and limited to a small per-client rate and daily volume. An API key, sent as the X-Api-Key header, lifts these restrictions; the plan's own limits apply instead.
| Argument | Type | Description |
|---|---|---|
| api_key | any | |
| extract_request* | any |
{
"type": "object",
"$defs": {
"ProxyType": {
"enum": [
"datacenter",
"residential",
"mix"
],
"type": "string",
"title": "ProxyType"
},
"WaitUntil": {
"enum": [
"commit",
"domcontentloaded",
"load",
"networkidle"
],
"type": "string",
"title": "WaitUntil"
},
"WaitConfig": {
"type": "object",
"title": "WaitConfig",
"properties": {
"wait_for": {
"anyOf": [
{
"type": "string",
"maxLength": 4096
},
{
"type": "null"
}
],
"title": "Wait For",
"default": null,
"description": "CSS selector or XPath expression to wait for before extracting the DOM. At least one matching element must become attached to the DOM for the wait to succeed. XPath expressions must start with `//` or `xpath=`; anything else is treated as a CSS selector. Applied after wait_until."
},
"wait_until": {
"anyOf": [
{
"$ref": "#/$defs/WaitUntil"
},
{
"type": "null"
}
],
"default": null,
"description": "Playwright page lifecycle event to wait for during navigation, before the selector wait or explicit delay. Accepted values: `commit` — response headers received and navigation committed; `domcontentloaded` — HTML parsed and DOM ready (no sub-resources); `load` — page and all sub-resources (images, scripts) fully loaded; `networkidle` — no network activity for 500 ms. When omitted, defaults to `domcontentloaded`."
},
"wait_timeout": {
"anyOf": [
{
"type": "integer",
"maximum": 30000,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Wait Timeout",
"default": null,
"description": "Deliberate pause in milliseconds inserted after wait_for resolves (or immediately after wait_until when wait_for is omitted), before the DOM is captured. Use to allow late-settling JavaScript to finish rendering. Range: 0–30 000 ms."
}
},
"description": "Explicit browser wait policy applied in order: wait_until → wait_for → wait_timeout.\nWhen a non-null WaitConfig is provided, the adaptive default settle phase is skipped\nand the caller owns the full wait sequence. Null fields inside the object are treated\nthe same as absence of that field."
},
"OutputFormat": {
"enum": [
"markdown",
"html"
],
"type": "string",
"title": "OutputFormat"
},
"ProxySettings": {
"type": "object",
"title": "ProxySettings",
"properties": {
"type": {
"$ref": "#/$defs/ProxyType",
"default": "residential",
"description": "Type of proxy to use (datacenter or residential). Defaults to 'residential' when omitted."
},
"country": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Z]{2}$"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "ISO 3166-1 alpha-2 country code for geo-targeting (e.g., 'US', 'GB'). Codes that are not backed by a geo-targeted proxy pool are rejected rather than silently ignored. If null, the server auto-resolves a country from the target URL (domain/path overrides first, then the TLD). If no country can be inferred, the upstream proxy provider picks the exit region."
}
}
},
"ExtractRequest": {
"type": "object",
"title": "ExtractRequest",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"format": "uri",
"minLength": 1,
"description": "URL to extract content from"
},
"proxy": {
"anyOf": [
{
"$ref": "#/$defs/ProxySettings"
},
{
"type": "null"
}
],
"default": {
"type": "residential",
"country": null
},
"description": "Proxy configuration. Optional — when omitted or explicitly `null`, defaults are applied: residential type, country auto-resolved from the target URL (domain/path overrides first, then the TLD; if nothing matches, the upstream proxy provider picks the exit region). Send an object to override either field; individual fields inside the object may also be null (see ProxySettings)."
},
"formats": {
"type": "array",
"items": {
"$ref": "#/$defs/OutputFormat"
},
"title": "Formats",
"default": [
"html"
],
"description": "Output formats to return"
},
"headers": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Headers",
"default": null,
"description": "Custom HTTP headers to include in extraction request. `Accept-Language` is the one exception on browser-rendered requests: it is not forwarded verbatim, because it would override the header the browser derives from its locale and leave the wire value contradicting `navigator.language`. The language you ask for is still honoured — it selects the browser locale, paired with the proxy country's region, so `en-US` through a German proxy renders the page as `en-DE`. `Host` and `:authority` are dropped: the target host always comes from `url`."
},
"timeout": {
"anyOf": [
{
"type": "integer",
"minimum": 1000
},
{
"type": "null"
}
],
"title": "Timeout",
"default": null,
"description": "Milliseconds this request may take, counted from when we receive it and including any queue wait. A wait for the per-site rate limit or for a free thread uses the same time: when it does not fit, the request is refused with 429 instead of being held longer. On expiry the escalation chain stops rather than the response merely arriving sooner: no further browser is launched, and the request is not billed. Omit it to keep the system ceiling. Sync requests only: sending it with processing_mode=async is rejected rather than ignored, because an async caller holds a job id and polls at its own pace. Values above the ceiling are clamped to it."
},
"render_js": {
"type": "boolean",
"title": "Render Js",
"default": false,
"description": "If true, uses a headless browser to render the page (slower, more expensive)."
},
"wait_config": {
"anyOf": [
{
"$ref": "#/$defs/WaitConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Grouped browser wait policy. Optional: when omitted or null, browser requests use the adaptive default settle policy whenever a browser runs. Send a non-null object to opt into caller-owned explicit wait mode, which skips the adaptive default settle phase. Null fields inside wait_config behave the same as absence. If render_js is not set explicitly, any non-null wait_config auto-enables browser rendering and the effective render_js value is returned in metadata. If render_js=false is sent together with a non-null wait_config, the request is rejected as ambiguous."
},
"processing_mode": {
"$ref": "#/$defs/ProcessingMode",
"default": "sync",
"description": "Processing mode: sync (block until done) or async (starts job and return job ID)"
}
}
},
"ProcessingMode": {
"enum": [
"sync",
"async"
],
"type": "string",
"title": "ProcessingMode"
}
},
"title": "extractArguments",
"required": [
"extract_request"
],
"properties": {
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"extract_request": {
"$ref": "#/$defs/ExtractRequest"
}
}
}Retrieve the result of an asynchronous extraction job by its job ID. Returns the current status (pending, running, completed, or failed) and, once completed, the extracted content and metadata. Use this tool to poll for results after submitting an extraction with processing_mode='async'. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | |
| api_key | any |
{
"type": "object",
"title": "get_job_resultArguments",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"title": "Job Id"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
}
}
}List extraction jobs with optional filters. Filter by job ID, URL, status (pending, running, completed, failed), output format, or date range. Results are paginated; use 'page' and 'page_size' to navigate large result sets. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| url | any | |
| page | integer | |
| job_id | any | |
| output | any | |
| api_key | any | |
| end_date | any | |
| page_size | integer | |
| job_status | any | |
| start_date | any |
{
"type": "object",
"$defs": {
"JobStatus": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"cancelled"
],
"type": "string",
"title": "JobStatus"
},
"OutputFormat": {
"enum": [
"markdown",
"html"
],
"type": "string",
"title": "OutputFormat"
}
},
"title": "list_jobsArguments",
"properties": {
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Url",
"default": null
},
"page": {
"type": "integer",
"title": "Page",
"default": 1
},
"job_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Job Id",
"default": null
},
"output": {
"anyOf": [
{
"$ref": "#/$defs/OutputFormat"
},
{
"type": "null"
}
],
"default": null
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 100
},
"job_status": {
"anyOf": [
{
"$ref": "#/$defs/JobStatus"
},
{
"type": "null"
}
],
"default": null
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null
}
}
}Discover all URLs under a base URL by combining sitemap parsing with HTML link extraction from the seed page. By default discovery is scoped to the exact seed host (a leading 'www.' is treated as equivalent) and, when the URL includes a path, to URLs under that path; sibling subdomains and outbound links are excluded. Set include_subdomains=true to widen the scope to the whole registrable domain and probe common subdomains (docs, blog, help, support). The optional 'search' parameter filters the discovered URLs by case-insensitive substring match — it does NOT query a search engine. Runs synchronously and returns the discovered links immediately. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| api_key | any | |
| map_request* | any |
{
"type": "object",
"$defs": {
"MapRequest": {
"type": "object",
"title": "MapRequest",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"format": "uri",
"minLength": 1,
"description": "Base URL to discover links from. By default discovery is scoped to this exact host (treating a leading 'www.' as equivalent) and, when the URL has a path, to URLs under that path. Set include_subdomains=true to widen the scope."
},
"search": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Search",
"default": null,
"description": "Case-insensitive substring filter applied to discovered URLs. Does not query a search engine; only narrows results found via sitemap/HTML discovery."
},
"include_subdomains": {
"type": "boolean",
"title": "Include Subdomains",
"default": false,
"description": "When false (default), discovery is scoped to the exact seed host only. When true, the scope widens to the whole registrable domain: sibling subdomains found in the seed's sitemap/HTML are kept, and common subdomains (docs, blog, help, support) are actively probed for their own sitemaps."
},
"ignore_query_parameters": {
"type": "boolean",
"title": "Ignore Query Parameters",
"default": true,
"description": "Strip query parameters when normalizing discovered URLs"
}
}
}
},
"title": "map_urlsArguments",
"required": [
"map_request"
],
"properties": {
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"map_request": {
"$ref": "#/$defs/MapRequest"
}
}
}Retrieve the full details and discovered links for a map job by its job ID. Returns the current status and, once completed, the discovered links and their source. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | |
| api_key | any |
{
"type": "object",
"title": "get_map_jobArguments",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"title": "Job Id"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
}
}
}List map jobs for the authenticated user with optional filters. Filter by base URL (partial match), status (pending, running, completed, failed), or date range. Results are paginated; use 'page' and 'page_size' to navigate. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| url | any | |
| page | integer | |
| api_key | any | |
| end_date | any | |
| page_size | integer | |
| job_status | any | |
| start_date | any |
{
"type": "object",
"$defs": {
"JobStatus": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"cancelled"
],
"type": "string",
"title": "JobStatus"
}
},
"title": "list_map_jobsArguments",
"properties": {
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Url",
"default": null
},
"page": {
"type": "integer",
"title": "Page",
"default": 1
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 10
},
"job_status": {
"anyOf": [
{
"$ref": "#/$defs/JobStatus"
},
{
"type": "null"
}
],
"default": null
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null
}
}
}Run a web search and return ranked results. Supports locale targeting (a language code like 'en', a language-region tag like 'en-US', or 'all'), pagination via 'page', safe-search filtering, and restricting results to a recency window via 'time_range'. By default the service rotates across its engines and falls back on failure; set 'engine' to pin one engine with no fallback. Returns the result list, the engine that served it, query suggestions, and any spelling correction. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| api_key | any | |
| search_request* | any |
{
"type": "object",
"$defs": {
"SearchRequest": {
"type": "object",
"title": "SearchRequest",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"title": "Result page",
"default": 1,
"maximum": 9,
"minimum": 1,
"examples": [
1,
2,
9
],
"description": "Result page to fetch. Without `engine`, 1 to 9. With `engine` set, the pinned engine's own limit applies instead: brave 9, duckduckgo 5, naver 9."
},
"safe": {
"enum": [
"off",
"moderate",
"strict"
],
"type": "string",
"title": "Safe-search level",
"default": "off",
"examples": [
"off",
"moderate",
"strict"
],
"description": "Safe-search filtering level. Accepted values: \"off\", \"moderate\", or \"strict\"."
},
"query": {
"type": "string",
"title": "Query",
"maxLength": 1000,
"minLength": 1,
"description": "Search query"
},
"engine": {
"anyOf": [
{
"enum": [
"brave",
"duckduckgo",
"naver"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Search engine",
"default": null,
"examples": [
"brave",
"duckduckgo",
"naver"
],
"description": "Pin the search to one engine, with no fallback to any other. Omit to let the service rotate across its engines and fall back on failure, which is what most callers want. Pinning trades reliability for control: a single engine having a bad moment becomes your error instead of being routed around."
},
"locale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Locale",
"default": null,
"description": "Locale tag: a language code ('en'), a language-region tag ('en-US'), or 'all'."
},
"time_range": {
"anyOf": [
{
"enum": [
"day",
"week",
"month",
"year"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Time range",
"default": null,
"examples": [
"day",
"week",
"month",
"year"
],
"description": "Restrict results to a recency window. Accepted values: \"day\", \"week\", \"month\", or \"year\"."
}
}
}
},
"title": "searchArguments",
"required": [
"search_request"
],
"properties": {
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"search_request": {
"$ref": "#/$defs/SearchRequest"
}
}
}Retrieve the full details and results for a search job by its job ID. Returns the current status and, once completed, the search results, suggestions, and any spelling correction applied. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | |
| api_key | any |
{
"type": "object",
"title": "get_search_jobArguments",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"title": "Job Id"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
}
}
}List search jobs for the authenticated user with optional filters. Filter by query (partial match), status (pending, running, completed, failed), or date range. Results are paginated; use 'page' and 'page_size' to navigate. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| query | any | |
| api_key | any | |
| end_date | any | |
| page_size | integer | |
| job_status | any | |
| start_date | any |
{
"type": "object",
"$defs": {
"JobStatus": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"cancelled"
],
"type": "string",
"title": "JobStatus"
}
},
"title": "list_search_jobsArguments",
"properties": {
"page": {
"type": "integer",
"title": "Page",
"default": 1
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 10
},
"job_status": {
"anyOf": [
{
"$ref": "#/$defs/JobStatus"
},
{
"type": "null"
}
],
"default": null
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null
}
}
}Retrieve aggregated extraction statistics for the authenticated user. Returns metrics such as total jobs, success and failure counts, and usage breakdowns over the specified date range: at most 366 days, counted back from the end date (an older start date is moved up; an end date after now is moved back to now). Defaults to the last 30 days when no dates are provided. Requires a Geonode API key, sent as the X-Api-Key header.
| Argument | Type | Description |
|---|---|---|
| api_key | any | |
| end_date | any | |
| start_date | any |
{
"type": "object",
"title": "get_statisticsArguments",
"properties": {
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Api Key",
"default": null
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null
}
}
}