MCP server

Real-time news search and chart cards for Claude, Cursor, VS Code, Codex and any MCP client, with the same key and prices as the API.

The typesearch MCP server gives any Model Context Protocol client four tools: three read-only tools for news search, and one that makes chart cards. It's remote (nothing to install), and it uses your API key and the API's prices.

URLhttps://api.typesearch.ai/mcp
TransportStreamable HTTP, stateless
AuthenticationAuthorization: Bearer <key> or x-api-key: <key>. Clients that only take a URL: ?typesearchApiKey=<key>
Server nametypesearch

The key is never logged: we strip it from our logs and error messages, also when it comes in the URL.

Install

The examples read your key from TYPESEARCH_API_KEY, or ask for it. Replace YOUR_API_KEY where a client needs it written in its configuration.

Cursor

Add to Cursor. Cursor reads the key from the TYPESEARCH_API_KEY environment variable. To add it by hand, put this in ~/.cursor/mcp.json (or in your project's .cursor/mcp.json):

mcp.json
{
  "mcpServers": {
    "typesearch": {
      "url": "https://api.typesearch.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${env:TYPESEARCH_API_KEY}"
      }
    }
  }
}

VS Code

Add to VS Code. VS Code asks for your key once and stores it as a secret. By hand, in .vscode/mcp.json:

.vscode/mcp.json
{
  "servers": {
    "typesearch": {
      "type": "http",
      "url": "https://api.typesearch.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${input:typesearch-api-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "typesearch-api-key",
      "description": "typesearch API key",
      "password": true
    }
  ]
}

Claude Code

claude mcp add --transport http typesearch https://api.typesearch.ai/mcp --header "Authorization: Bearer $TYPESEARCH_API_KEY"

Add --scope user to have it in every project.

Codex

codex mcp add typesearch --url https://api.typesearch.ai/mcp --bearer-token-env-var TYPESEARCH_API_KEY

Claude Desktop

Open Settings → Developer → Edit config, add the server to claude_desktop_config.json with your key and restart Claude.

Claude Desktop starts local servers from this file, so it reaches the remote one through mcp-remote:

claude_desktop_config.json
{
  "mcpServers": {
    "typesearch": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.typesearch.ai/mcp",
        "--header",
        "Authorization:${TYPESEARCH_AUTH}"
      ],
      "env": {
        "TYPESEARCH_AUTH": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Windsurf

Add it to mcp_config.json. Windsurf reads the key from TYPESEARCH_API_KEY:

mcp_config.json
{
  "mcpServers": {
    "typesearch": {
      "serverUrl": "https://api.typesearch.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${env:TYPESEARCH_API_KEY}"
      }
    }
  }
}

Other clients

Any client that speaks Streamable HTTP works with the URL and one of the headers above. If it only takes a URL, put the key in it:

https://api.typesearch.ai/mcp?typesearchApiKey=YOUR_API_KEY

Tools

search_news, get_contents and find_similar are read-only. create_chart stores the card it makes, so its image and embed can be opened later. Results are compact (the fields an agent cites, and nothing empty), so they leave room in the context window for the answer.

search_news

Search the news index or, with index, your own custom index. Returns ranked articles with title, URL, source, publication time, a short excerpt and a calibrated relevance score.

Parameter
queryrequiredWhat to search for, in any language.
indexSearch your own custom index (idx_…) instead of the news index. With index, days has no default.
modefastultra, fast, normal or deep: how much is read before ranking. See Modes.
max_results10From 1 to 25.
days7Only the last N days, 1 to 365. The default of 7 doesn’t apply when you give published_after or published_before.
published_after, published_beforeISO dates (2026-09-25) or date-times with their offset (2026-09-25T14:00:00Z).
include_domains, exclude_domainsLists of domains.
countries, languagesOnly outlets from these countries (ISO 3166-1 alpha-2, e.g. AR) or that publish in these languages (ISO 639-1, e.g. es).

get_contents

Metadata and short verbatim excerpts of up to 10 URLs. With query, the model picks the excerpts about it.

Parameter
urlsrequired1 to 10 URLs.
queryThe excerpts are chosen for it.

find_similar

Everything in the index about the same story as a URL, ranked, and who published it first.

Parameter
urlrequiredThe article to start from.
max_results10From 1 to 25.
days7Only the last N days, 1 to 365.

create_chart

A chart card from a question in plain words: the standings of the latest race, poll or election results by candidate, wins in a season, what an outlet published, coverage over time, share of voice between names, tone, the outlets that cover a topic most, a timeline of a story, the figures articles publish (a price, a rate), or data from your custom index. It works out what the user expects to see, checks every value against its source, picks the chart, the key figures and a title that states the finding, and returns an image for the agent to show and an embed. If the exact data isn't published, it shows the closest thing and says so. See Charts.

Parameter
queryrequiredWhat to chart, in plain words and any language: "blue dollar this week", "Milei vs Bullrich coverage", "which outlets cover lithium".
typeautoPicks the chart that tells the data best. Or force one: line, area, bar, bar_horizontal, stacked_bar, pie, donut, scatter, funnel, timeline, kpi or table.
themelightlight, dark, editorial (warm paper) or electric (deep blue).
daysOnly the last N days, 1 to 365. By default it depends on the chart: 30 for coverage, 7 for figures.
compareWhat to compare, 2 to 5 names, when the query doesn't say it with "vs".
countries, languagesOnly outlets from these countries (ISO 3166-1 alpha-2, e.g. AR) or that publish in these languages (ISO 639-1, e.g. es).
indexChart your custom index (idx_…) instead of the news: prices, ratings, availability, brands.
interpretationOne of the alternatives of a previous call with the same query: chart that reading instead.

It returns the title (it states the finding), the subtitle, image_url (a PNG to show the user), embed_url (an iframe for a page or an app), key_figures (each with its change), the values drawn in data (up to 40 per series), the rows of a table in table (up to 10), events for a timeline, sources and cost_usd. From a query in words it also returns what it understood, the other readings in alternatives, and rung: exact for the data asked for, or partial, related, coverage or stories for the closest thing found. improving: true means the image and the embed will update themselves when the exact data arrives. The same call within 10 minutes comes back with cached: true and costs nothing.

Every result shows its source and links to the original; we don’t publish the list of sources. Missing an outlet? Suggest it from the dashboard (Suggest a source) or write to support@typesearch.ai.

Pricing

Each tool call is billed like the API request it makes:

ToolPrice
search_news$1.00 per 1,000 in ultra · $1.40 in fast · $2.20 in normal · $5.60 in deep, also over a custom index
get_contents$0.20 per 1,000 pages · $0.40 with query
find_similar$2.20 per 1,000 requests
create_chartIts search (the mode it needs, per query) plus $0.50 per 1,000 charts: from $1.50 per 1,000

Identical calls within 10 minutes come from the cache and cost nothing. Every call counts toward your key’s rate limits.

Errors

A problem comes back as a tool error with a message the model can read and act on: a missing or invalid key, no credit left, a rate limit to wait out, or no articles on a chart's topic (not billed). The same conditions as the API’s errors.

On this page