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.
| URL | https://api.typesearch.ai/mcp |
| Transport | Streamable HTTP, stateless |
| Authentication | Authorization: Bearer <key> or x-api-key: <key>. Clients that only take a URL: ?typesearchApiKey=<key> |
| Server name | typesearch |
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):
{
"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:
{
"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_KEYClaude 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:
{
"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:
{
"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_KEYTools
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 | ||
|---|---|---|
query | required | What to search for, in any language. |
index | Search your own custom index (idx_…) instead of the news index. With index, days has no default. | |
mode | fast | ultra, fast, normal or deep: how much is read before ranking. See Modes. |
max_results | 10 | From 1 to 25. |
days | 7 | Only 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_before | ISO dates (2026-09-25) or date-times with their offset (2026-09-25T14:00:00Z). | |
include_domains, exclude_domains | Lists of domains. | |
countries, languages | Only 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 | ||
|---|---|---|
urls | required | 1 to 10 URLs. |
query | The 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 | ||
|---|---|---|
url | required | The article to start from. |
max_results | 10 | From 1 to 25. |
days | 7 | Only 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 | ||
|---|---|---|
query | required | What to chart, in plain words and any language: "blue dollar this week", "Milei vs Bullrich coverage", "which outlets cover lithium". |
type | auto | Picks 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. |
theme | light | light, dark, editorial (warm paper) or electric (deep blue). |
days | Only the last N days, 1 to 365. By default it depends on the chart: 30 for coverage, 7 for figures. | |
compare | What to compare, 2 to 5 names, when the query doesn't say it with "vs". | |
countries, languages | Only outlets from these countries (ISO 3166-1 alpha-2, e.g. AR) or that publish in these languages (ISO 639-1, e.g. es). | |
index | Chart your custom index (idx_…) instead of the news: prices, ratings, availability, brands. | |
interpretation | One 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:
| Tool | Price |
|---|---|
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_chart | Its 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.