Bavest MCP server

Connect Claude, ChatGPT, Cursor, VS Code, Windsurf and other AI tools to Bavest financial data over the Model Context Protocol.

One URL for every client: https://api.bavest.co/v2/mcp. Each MCP tool wraps one Bavest v2 data route (89 of the 98 routes), so an AI tool can look up fundamentals, ETF holdings, dividends, estimates and economic data in plain language.

You need a Bavest API key. Sign up for a free trial key, or sign in to get these setups with your own key filled in and a connection test.

Server

SettingValue
URLhttps://api.bavest.co/v2/mcp
TransportStreamable HTTP. Every request is one POST, every reply one JSON body (no session, no SSE stream).
Authenticationx-api-key: YOUR_API_KEY header (preferred). Optional api_key query parameter for connectors that cannot set headers.
Without a keyinitialize and tools/list work; tool calls need a key.
UsageEach tool call counts against your plan like the REST call it wraps.

Authentication

Send your key in the x-api-key header. It is the same key and the same header as the REST API, see Authentication.

Some connectors only take a URL and cannot set headers: Claude custom connectors and ChatGPT developer mode. For those the server also accepts the key as a query parameter, https://api.bavest.co/v2/mcp?api_key=YOUR_API_KEY. The connector then stores the key inside the URL, and URLs end up in logs and settings exports, so use this form only where no header is possible and rotate the key if the URL leaks.

Install in one click

These links open the client and add the server with a placeholder key. Replace YOUR_API_KEY in the client's MCP settings afterwards.

Set up your client

Pick your tool, copy the setup and replace YOUR_API_KEY with your key.

Claude

Setup: claude.ai and Claude Desktop, as a custom connector.

  1. In Claude, open Customize, then Connectors.
  2. Click +, then Add custom connector.
  3. Name it Bavest and paste the URL below. Leave the OAuth fields empty.
  4. In a chat, switch Bavest on under + and Connectors.
https://api.bavest.co/v2/mcp?api_key=YOUR_API_KEY

Claude Code

Setup: one command in your terminal.

  1. Run the command below. It adds Bavest for all your projects.
  2. Check it with claude mcp list.
claude mcp add --transport http bavest https://api.bavest.co/v2/mcp --header "x-api-key: YOUR_API_KEY" --scope user

Cursor

Setup: ~/.cursor/mcp.json, or .cursor/mcp.json in one project.

  1. Open ~/.cursor/mcp.json (create it if it is missing).
  2. Paste the block below. If the file already has servers, add the bavest entry inside mcpServers.
  3. Restart Cursor, or switch the server on under Settings, MCP.
{
  "mcpServers": {
    "bavest": {
      "url": "https://api.bavest.co/v2/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}

ChatGPT

Setup: developer mode, on paid ChatGPT plans.

  1. In ChatGPT settings, turn on Developer mode.
  2. Add a new app or connector and paste the URL below as the MCP server URL.
  3. Choose no authentication: the key is already in the URL.
https://api.bavest.co/v2/mcp?api_key=YOUR_API_KEY

VS Code

Setup: .vscode/mcp.json, for Copilot agent mode.

  1. Create .vscode/mcp.json in your project.
  2. Paste the block below, then start bavest with the command MCP: List Servers.
{
  "servers": {
    "bavest": {
      "type": "http",
      "url": "https://api.bavest.co/v2/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}

Windsurf

Setup: ~/.codeium/windsurf/mcp_config.json, for Cascade.

  1. In Windsurf, open Cascade, then Manage MCPs, then View raw config.
  2. Paste the block below. If the file already has servers, add the bavest entry inside mcpServers.
  3. Click Refresh in Manage MCPs.
{
  "mcpServers": {
    "bavest": {
      "serverUrl": "https://api.bavest.co/v2/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}

Other clients

Setup: any client that speaks MCP over HTTP.

  1. Transport: Streamable HTTP. The server answers every POST with one JSON reply.
  2. Send the key in the x-api-key header. If the client cannot set headers, use the URL with ?api_key=.
URL:    https://api.bavest.co/v2/mcp
Header: x-api-key: YOUR_API_KEY

Without headers: https://api.bavest.co/v2/mcp?api_key=YOUR_API_KEY

Tools

One tool per route, named after the route's operationId in snake case: equities.profile is equities_profile, etfs.topHoldings is etfs_top_holdings. A tool takes the route's query parameters (or its JSON body) as arguments and returns the route's response. tools/list returns the exact names and input schemas. Tools for routes your plan does not include answer with an error instead of data, and each call counts against your plan like the REST call.

Inputs that go together: many tools take symbol or isin, and need exactly one of them. The input schema from tools/list marks both optional, so send one. The OpenAPI spec lists these groups per operation in x-one-of-parameters (for example [["symbol", "isin"]]), and each route page says "Required: one of symbol, isin".

89 tools for the 98 data routes in this reference (tool list checked 2026-10-26). Each tool links to its route.

GroupTools
Accountaccount_quota, account_status
Bulkbulk_endpoint
Calendarcalendar_earnings, calendar_ipos, calendar_agm, calendar_splits
Corporate Actionscorporate_actions_earnings, corporate_actions_earnings_transcript, corporate_actions_earnings_transcript_periods, corporate_actions_splits
Cryptocrypto_quote, crypto_list
Dividendsdividends_annual, dividends_calendar, dividends_history, dividends_estimates
Economic Indicatorseconomy_cpi, economy_gdp, economy_inflation, economy_interest_rates, economy_unemployment, economy_indicator, economy_countries, metrics_history
Equitiesequities_balance_sheets, equities_cash_flows, equities_logo, equities_profile, equities_metric_names, equities_metrics, equities_financials_ttm, equities_income_statements, equities_market_cap, equities_market_cap_history, equities_peers
Timeseries Datasecurities_nav
Estimatesestimates_consensus, estimates_recommendations, estimates_price_target, estimates_upgrades_downgrades, estimates_ai_estimates, estimates_ai_estimates_history
ETFsetfs_category, etfs_countries, etfs_document_catalog, etfs_fees, etfs_holdings, etfs_top_holdings, etfs_kid_document, etfs_kid_languages, etfs_list, etfs_metrics, etfs_profile, etfs_risk, etfs_sectors, etfs_top_sectors, etfs_metric_names, etfs_top_countries, etfs_country_list, etfs_structure
Forexforex_candles, forex_quote
Fundsfunds_countries, funds_holdings, funds_metrics, funds_metric_names, funds_profile, funds_sectors, funds_list
IPOipo_hot, ipo_documents, ipo_profile
Newsnews_market, news_by_stock
Bavest QuantOSbavest_quantos_allocate, bavest_quantos_chart, bavest_quantos_price, bavest_quantos_regions, bavest_quantos_returns, bavest_quantos_sectors, bavest_quantos_stats
Referencereference_adr_list, reference_security_list, reference_delisted_list, reference_isin_change_list, reference_search, reference_search_aggregated, reference_screen

REST only, no MCP tool (9): Equity Metrics History Export, Submit Equity Data Export, Metric History, Equities Metrics History Export Status, Submit ETF Data Export, ETF Export Status, ETF Asset Class Breakdown, Earnings Release Filings, Fund Asset Class Breakdown.

Test from a terminal

curl -s https://api.bavest.co/v2/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://api.bavest.co/v2/mcp \
  -H 'content-type: application/json' \
  -H "x-api-key: $BAVEST_API_KEY" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"equities_profile","arguments":{"symbol":"AAPL"}}}'

This page as Markdown: /docs/mcp.md