diff --git a/app/en/mcp-servers/search/exa-api/page.mdx b/app/en/mcp-servers/search/exa_api/exa-api/page.mdx
similarity index 100%
rename from app/en/mcp-servers/search/exa-api/page.mdx
rename to app/en/mcp-servers/search/exa_api/exa-api/page.mdx
diff --git a/app/en/mcp-servers/search/exa_api/page.mdx b/app/en/mcp-servers/search/exa_api/page.mdx
new file mode 100644
index 000000000..27e5b89e5
--- /dev/null
+++ b/app/en/mcp-servers/search/exa_api/page.mdx
@@ -0,0 +1,1519 @@
+# ExaApi
+
+import StarterToolInfo from "@/app/_components/starter-tool-info";
+import ToolInfo from "@/app/_components/tool-info";
+import Badges from "@/app/_components/badges";
+import TabbedCodeBlock from "@/app/_components/tabbed-code-block";
+import TableOfContents from "@/app/_components/table-of-contents";
+import ToolFooter from "@/app/_components/tool-footer";
+import { Callout } from "nextra/components";
+
+
+
+
+
+
+
+The ExaApi MCP Server offers a comprehensive suite of tools for conducting searches, managing websets, and handling research requests.
+
+## Available Tools
+
+
+
+
+ If you need to perform an action that's not listed here, you can [get in touch
+ with us](mailto:contact@arcade.dev) to request a new tool, or [create your own
+ tools](/home/build-tools/create-a-mcp-server).
+
+
+## ExaApi.PerformExaSearch
+
+
+
+
+Conduct a search using Exa and retrieve relevant results.
+
+**Parameters**
+
+- **mode** (`Enum` [ToolMode](#toolmode), required) Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation
+- **request_body** (`string`, optional) Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.FindSimilarLinks
+
+
+
+
+Find similar links to a given link.
+
+**Parameters**
+
+- **mode** (`Enum` [ToolMode](#toolmode), required) Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation
+- **request_body** (`string`, optional) Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetContentDetails
+
+
+
+
+Retrieve details about specific content.
+
+**Parameters**
+
+- **mode** (`Enum` [ToolMode](#toolmode), required) Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation
+- **request_body** (`string`, optional) Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GenerateAnswerSummary
+
+
+
+
+Retrieve direct answers or detailed summaries with citations.
+
+**Parameters**
+
+- **search_query** (`string`, required) The question or query to be answered or summarized.
+- **enable_streaming_response** (`boolean`, optional) Return the response as a server-sent events (SSE) stream if set to true.
+- **include_full_text** (`boolean`, optional) If true, the response includes full text content in the search results.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListResearchRequests
+
+
+
+
+Retrieve a paginated list of research requests.
+
+**Parameters**
+
+- **pagination_cursor** (`string`, optional) A string representing the position in the paginated results to continue retrieving data from.
+- **results_limit** (`number`, optional) Specifies the number of research requests to return in the response. Helps manage pagination effectively.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CreateResearchRequest
+
+
+
+
+Create a new research request.
+
+**Parameters**
+
+- **research_request_details** (`json`, required) JSON object containing details of the research request including parameters and criteria.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetResearchById
+
+
+
+
+Retrieve research information using a specific ID.
+
+**Parameters**
+
+- **enable_streaming** (`string`, required) Set to 'true' to receive real-time streaming updates of the research information.
+- **event_filter** (`string`, required) Specify the events to filter for in the research retrieval. Accepts a comma-separated list of event types.
+- **research_id** (`string`, required) A string representing the unique identifier of the research to be retrieved.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CreateWebset
+
+
+
+
+Create a new Webset with optional configurations.
+
+**Parameters**
+
+- **webset_configuration** (`json`, required) A JSON object detailing optional search, import, and enrichment configurations for the Webset. Include any necessary identifiers like `externalId`.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListWebsets
+
+
+
+
+Retrieve a list of available websets.
+
+**Parameters**
+
+- **pagination_cursor** (`string`, optional) A string used to paginate through the list of Websets.
+- **websets_return_limit** (`number`, optional) Specify the maximum number of Websets to return in the response.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetWebsetDetails
+
+
+
+
+Retrieve detailed information about a specific webset.
+
+**Parameters**
+
+- **webset_identifier** (`string`, required) The unique identifier or external ID for the Webset to retrieve.
+- **resources_to_expand** (`array[string]`, optional) A list of resources to include in the response for additional details.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.UpdateWebset
+
+
+
+
+Update details of an existing webset.
+
+**Parameters**
+
+- **webset_details** (`json`, required) A JSON object containing the details to update for the webset. This includes any attributes that need to be changed.
+- **webset_id** (`string`, required) The unique id or externalId of the Webset to be updated. Ensure it matches a valid Webset.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.DeleteWebset
+
+
+
+
+Deletes a Webset and its associated items.
+
+**Parameters**
+
+- **webset_identifier** (`string`, required) The unique identifier or external ID of the Webset to delete.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CancelWebsetOperations
+
+
+
+
+Cancel all operations on a specified Webset.
+
+**Parameters**
+
+- **webset_identifier** (`string`, required) The ID or external ID of the Webset to cancel operations on.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.PreviewSearchDecomposition
+
+
+
+
+Preview and analyze search query decomposition.
+
+**Parameters**
+
+- **search_query_details** (`json`, required) A JSON object detailing the search query to preview. It includes elements like the search string and any additional parameters for analysis.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetWebsetItem
+
+
+
+
+Retrieve a specific Webset Item by ID.
+
+**Parameters**
+
+- **webset_identifier** (`string`, required) The ID or external ID of the Webset to identify the desired Webset from which the item is to be retrieved.
+- **webset_item_id** (`string`, required) The unique identifier of the Webset item to retrieve.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.DeleteWebsetItem
+
+
+
+
+Delete an item from a webset and cancel its enrichment process.
+
+**Parameters**
+
+- **webset_identifier** (`string`, required) The ID or external ID of the Webset from which the item will be deleted.
+- **webset_item_id** (`string`, required) The unique identifier of the item to be deleted from the webset.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListWebsetItems
+
+
+
+
+Retrieve a list of items from a specific webset.
+
+**Parameters**
+
+- **webset_identifier** (`string`, required) The ID or external ID of the Webset to retrieve items from.
+- **pagination_cursor** (`string`, optional) A string used to paginate through the results. Pass this to retrieve the next set of items in the webset.
+- **result_limit** (`number`, optional) Specify the number of results to return. This controls the size of the page in a paginated response.
+- **source_id** (`string`, optional) The unique identifier for the source from which to retrieve items.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CreateWebsetEnrichment
+
+
+
+
+Create an enrichment for a specified webset.
+
+**Parameters**
+
+- **enrichment_details** (`json`, required) A JSON object containing the details required to create the enrichment for the webset.
+- **webset_identifier** (`string`, required) The ID or external ID of the webset to enrich.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.UpdateWebsetEnrichment
+
+
+
+
+Update an enrichment configuration for a webset.
+
+**Parameters**
+
+- **enrichment_configuration_details** (`json`, required) A JSON object containing the details of the enrichment configuration to update.
+- **enrichment_configuration_id** (`string`, required) The unique identifier of the enrichment configuration to be updated.
+- **webset_identifier** (`string`, required) The identifier of the webset to be updated. Provide the specific name or ID of the webset.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetEnrichmentDetails
+
+
+
+
+Retrieve detailed information about a specific enrichment.
+
+**Parameters**
+
+- **enrichment_id** (`string`, required) The unique identifier for the specific enrichment you want to retrieve within the webset.
+- **webset_identifier** (`string`, required) The ID or external ID of the webset to retrieve enrichment details for.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.DeleteEnrichment
+
+
+
+
+Delete an enrichment and cancel running processes.
+
+**Parameters**
+
+- **enrichment_id** (`string`, required) The unique identifier of the enrichment to be deleted.
+- **webset_id** (`string`, required) The ID or external ID of the Webset to identify which enrichment to delete.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CancelEnrichmentProcess
+
+
+
+
+Cancel a running enrichment process.
+
+**Parameters**
+
+- **enrichment_id** (`string`, required) The unique identifier of the enrichment process to be canceled.
+- **webset_id** (`string`, required) The ID or external ID of the Webset to identify which enrichment process to cancel.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CreateWebhookForNotifications
+
+
+
+
+Create webhooks to receive event notifications.
+
+**Parameters**
+
+- **webhook_configuration** (`json`, required) A JSON object detailing the events to monitor and the destination URL for notifications.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetWebhooksList
+
+
+
+
+Retrieve a paginated list of all webhooks in your account.
+
+**Parameters**
+
+- **pagination_cursor** (`string`, optional) The cursor used to navigate through pages of results for webhooks.
+- **results_per_page** (`number`, optional) The number of webhooks to return per page, up to a maximum of 200.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetWebhookInfo
+
+
+
+
+Retrieve details of a webhook using its ID.
+
+**Parameters**
+
+- **webhook_id** (`string`, required) The unique identifier for the webhook you want details about.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.UpdateWebhookSettings
+
+
+
+
+Update a webhook's settings for events, URL, and metadata.
+
+**Parameters**
+
+- **webhook_id** (`string`, required) The unique identifier of the webhook to be updated.
+- **webhook_update_request_body** (`json`, required) JSON object containing webhook updates, such as events list, new URL, and metadata.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.RemoveWebhook
+
+
+
+
+Remove a webhook from your account.
+
+**Parameters**
+
+- **webhook_id** (`string`, required) The unique identifier of the webhook to remove. This is necessary for specifying which webhook to delete.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListWebhookAttempts
+
+
+
+
+Retrieve and list all webhook attempt records.
+
+**Parameters**
+
+- **webhook_id** (`string`, required) The unique identifier for the webhook to retrieve attempt records for.
+- **event_type_filter** (`string`, optional) Filter webhook attempts by specifying the type of event, such as 'webset.created' or 'monitor.run.completed'.
+- **filter_by_successful_attempts** (`boolean`, optional) Use 'true' to filter for successful webhook attempts and 'false' for unsuccessful ones.
+- **pagination_cursor** (`string`, optional) A string used to paginate through the webhook attempt results.
+- **results_limit** (`number`, optional) Specify the maximum number of webhook attempt records to return.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListSystemEvents
+
+
+
+
+Retrieve a list of all system events.
+
+**Parameters**
+
+- **created_after** (`string`, optional) Filter events created after or at this timestamp. Use a valid ISO 8601 datetime string in UTC.
+- **event_types_filter** (`array[string]`, optional) Filter events by specifying an array of event type names.
+- **filter_created_before** (`string`, optional) Filter events created before or at this timestamp (inclusive). Provide a valid ISO 8601 datetime string in UTC.
+- **pagination_cursor** (`string`, optional) Cursor for paginating through event results. Use it to navigate through pages of events.
+- **results_limit** (`number`, optional) Specify the number of event results to return. This controls the size of the result set for a single request.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetEventById
+
+
+
+
+Retrieve details of an event using its ID.
+
+**Parameters**
+
+- **event_id** (`string`, required) The unique identifier of the event to retrieve details for.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CreateWebsetSearch
+
+
+
+
+Create a new search for a specified webset.
+
+**Parameters**
+
+- **search_criteria** (`json`, required) JSON object representing new search criteria for the webset. This specifies the parameters or conditions for the new search.
+- **webset_id** (`string`, required) The unique identifier for the Webset you want to create a search in.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetSearchById
+
+
+
+
+Retrieve a search by its ID.
+
+**Parameters**
+
+- **search_id** (`string`, required) The ID of the search to retrieve details for.
+- **webset_id** (`string`, required) The ID of the Webset to retrieve the specific search.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CancelRunningSearch
+
+
+
+
+Cancels a currently running search operation.
+
+**Parameters**
+
+- **search_id** (`string`, required) The ID of the search to cancel. Provide the unique string identifier for the targeted search operation.
+- **webset_id** (`string`, required) The ID of the Webset where the search is executing. Use this to specify the Webset to be canceled.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CreateMonitorForWebsets
+
+
+
+
+Create a scheduled monitor to update Websets with fresh data.
+
+**Parameters**
+
+- **monitor_configuration** (`json`, required) JSON object describing the configuration for the new monitor, including schedule, search and refresh operations.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListWebsiteMonitors
+
+
+
+
+Fetch all monitors associated with a website.
+
+**Parameters**
+
+- **pagination_cursor** (`string`, optional) The cursor for paginating through the monitor results.
+- **results_limit** (`number`, optional) Specifies the maximum number of monitor results to return. Use for pagination.
+- **webset_id** (`string`, optional) The unique identifier for the Webset to retrieve monitors for. This is required to specify which website's monitors you want to list.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetSpecificMonitor
+
+
+
+
+Retrieve details of a specific monitor using its ID.
+
+**Parameters**
+
+- **monitor_id** (`string`, required) The unique identifier of the monitor to retrieve details for.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.UpdateMonitorConfiguration
+
+
+
+
+Update the configuration of a monitor.
+
+**Parameters**
+
+- **monitor_configuration_details** (`json`, required) A JSON object containing the new configuration settings for the monitor.
+- **monitor_id** (`string`, required) The unique identifier for the monitor to update.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.DeleteMonitor
+
+
+
+
+Deletes a specified monitor using its ID.
+
+**Parameters**
+
+- **monitor_id** (`string`, required) The unique identifier for the monitor to be deleted.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListMonitorRuns
+
+
+
+
+Lists all runs for a given monitor.
+
+**Parameters**
+
+- **monitor_id** (`string`, required) The ID of the monitor to list all associated runs.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetSpecificMonitorRun
+
+
+
+
+Retrieve details of a specific monitor run.
+
+**Parameters**
+
+- **monitor_id** (`string`, required) The unique identifier of the monitor to retrieve the run for.
+- **run_id** (`string`, required) The unique identifier of the specific run to retrieve details for.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.CreateDataImport
+
+
+
+
+Initiates a new data import for uploading data into Websets.
+
+**Parameters**
+
+- **data_import_details** (`json`, required) The JSON object containing data to import for Websets. This includes details for enrichment, search, or exclusion processes.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.ListImports
+
+
+
+
+Retrieve all import entries for the Webset.
+
+**Parameters**
+
+- **pagination_cursor** (`string`, optional) String used for paginating through results. Pass it to retrieve the next set of results.
+- **results_limit** (`number`, optional) Specify the maximum number of import results to return.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.GetSpecificImport
+
+
+
+
+Retrieve details of a specific import.
+
+**Parameters**
+
+- **import_id** (`string`, required) The unique identifier for the specific import to retrieve details about.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.UpdateImportsConfiguration
+
+
+
+
+Update an import configuration with new settings.
+
+**Parameters**
+
+- **import_configuration_details** (`json`, required) JSON object containing the new settings for the import configuration. Include all necessary fields that need to be updated.
+- **import_id** (`string`, required) The identifier for the import configuration to be updated.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## ExaApi.DeleteImport
+
+
+
+
+Delete an import by its ID.
+
+**Parameters**
+
+- **import_id** (`string`, required) The unique identifier of the import to be deleted.
+
+**Secrets**
+
+This tool requires the following secrets: `EXA_API_KEY` (learn how to [configure secrets](/home/build-tools/create-a-tool-with-secrets))
+
+## Reference
+
+Below is a reference of enumerations used by some of the tools in the ExaApi MCP Server:
+
+### ToolMode
+
+- **GET_REQUEST_SCHEMA**: `get_request_schema`
+- **EXECUTE**: `execute`
+
+
diff --git a/make_toolkit_docs/docs_builder.py b/make_toolkit_docs/docs_builder.py
index 18fb1aadc..a03014c7d 100644
--- a/make_toolkit_docs/docs_builder.py
+++ b/make_toolkit_docs/docs_builder.py
@@ -63,7 +63,7 @@ def build_toolkit_mdx_dir_path(
"en",
"mcp-servers",
docs_section,
- f"{toolkit_name.lower().replace('_', '-')}",
+ f"{toolkit_name.lower().replace('-', '_')}",
)
if ensure_exists: