Exa MCP connector
API KeyAISearchDeveloper ToolsConnect to Exa MCP to perform AI-powered semantic web search, crawl websites for structured content, get natural language answers from the web, and run...
Exa MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Exa MCP credentials with Scalekit so it can authenticate requests on your behalf. You do this once per environment.
Dashboard setup steps
Register your Exa API key with Scalekit so it can authenticate and proxy requests on behalf of your users. Unlike OAuth connectors, Exa MCP uses API key authentication — there is no redirect URI or OAuth flow.
-
Generate an Exa API key
-
Sign in to dashboard.exa.ai/api-keys. Under Management, click API Keys.
-
Click + Create Key, enter a name (e.g.,
Agent Auth), and confirm. -
In the Secret Key column, click the eye icon to reveal the key and copy it. Store it somewhere safe — you will not be able to view it again.
-
-
Create a connection in Scalekit
-
In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Exa MCP and click Create.
-
Note the Connection name — you will use this as
connection_namein your code (e.g.,examcp).
-
-
Add a connected account
Connected accounts link a specific user identifier in your system to an Exa API key. Add accounts via the dashboard for testing, or via the Scalekit API in production.
Via dashboard (for testing)
-
Open the connection you created and click the Connected Accounts tab → Add account.
-
Fill in:
- Your User’s ID — a unique identifier for this user in your system (e.g.,
user_123) - API Key — the Exa API key you copied in step 1
- Your User’s ID — a unique identifier for this user in your system (e.g.,
-
Click Save.
Via API (for production)
await scalekit.actions.upsertConnectedAccount({connectionName: 'examcp',identifier: 'user_123',credentials: { api_key: 'your-exa-api-key' },});scalekit_client.actions.upsert_connected_account(connection_name="examcp",identifier="user_123",credentials={"api_key": "your-exa-api-key"}) -
-
-
Make your first call
Section titled “Make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'examcp'const identifier = 'user_123'// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'examcp_web_fetch_exa',toolInput: { urls: [] },})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "examcp"identifier = "user_123"# Make your first callresult = actions.execute_tool(tool_input={"urls":[]},tool_name="examcp_web_fetch_exa",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Search web — Search the web and get clean, ready-to-use content
- Fetch web — Read one or more webpages and return their full content as clean markdown
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
examcp_web_fetch_exa#Read one or more webpages and return their full content as clean markdown. Use when you have specific URLs to read, or to get full content after a web search returns insufficient highlights. Supports batching multiple URLs in a single call.2 params
Read one or more webpages and return their full content as clean markdown. Use when you have specific URLs to read, or to get full content after a web search returns insufficient highlights. Supports batching multiple URLs in a single call.
urlsarrayrequiredOne or more URLs to fetch. Batch multiple URLs in a single call.maxCharactersnumberoptionalMaximum characters to extract per page (default: 3000).examcp_web_search_exa#Search the web and get clean, ready-to-use content. Best for current information, news, facts, people, and companies. Describe the ideal page rather than using keywords (e.g. 'blog post comparing React and Vue performance'). Use category:people or category:company to search LinkedIn profiles or companies.2 params
Search the web and get clean, ready-to-use content. Best for current information, news, facts, people, and companies. Describe the ideal page rather than using keywords (e.g. 'blog post comparing React and Vue performance'). Use category:people or category:company to search LinkedIn profiles or companies.
querystringrequiredNatural language description of the ideal page. Optionally include category:people or category:company to focus results.numResultsnumberoptionalNumber of search results to return (default: 10).