Developers · MCP server

WHT.day MCP server

WHT.day runs a Model Context Protocol (MCP) server at https://wht.day/mcp. Connect Claude, ChatGPT, Cursor or any other MCP client with a personal API key, and it can search everything you saved, read saves in full, open any day and build dated timelines. It is read-only and included in every paid subscription.

Endpointhttps://wht.day/mcp
TransportStreamable HTTP, stateless. Send JSON-RPC with POST; GET and DELETE return 405.
AuthenticationAuthorization: Bearer wht_…, or the key in the path: https://wht.day/mcp/wht_…
Get a keyWHT.day → Settings → API access
Who can use itPaid subscribers ($8/month or $68/year)
AccessRead-only. Nothing can be saved, edited or deleted through it.
Server namewht-day-archive
Tools8, plus one prompt, all listed below

How does authentication work?

Each request carries a personal API key. Send it in the Authorization header, which is the preferred way:

Authorization: Bearer wht_YOUR_KEY

Some apps only let you paste a URL. For those, put the key in the path instead: https://wht.day/mcp/wht_YOUR_KEY. Both reach the same server.

  • Creating a key. Sign in, open Settings, find API access, give the key a label such as “Claude”, and press Create API key. The key is shown once, together with an MCP link that has the key built in. Copy them then.
  • Format. Keys start with wht_, followed by 43 random URL-safe characters.
  • Who can create one. API access is part of a paid subscription, at $8 a month or $68 a year. The subscription is checked on every request: while it is inactive, keys stop working without being revoked, and they work again as soon as it resumes.
  • What a key can reach. Only the archive of the account that created it, and only through the read-only tools below. A key can't sign in to the app or change any setting.
  • Storage and revoking. WHT.day stores only a SHA-256 hash of each key, plus its first characters so you can tell keys apart. A lost key can't be shown again. Revoke it in API access and create a new one; a revoked key stops working on its next request.
  • No OAuth. The server doesn't run an OAuth sign-in flow. The API key is the only credential.

Treat a key, and an MCP link with a key in it, like a password: anyone who has it can read your archive.

How do I connect an AI?

In each example, replace wht_YOUR_KEY with your key.

Claude Code

claude mcp add --transport http wht https://wht.day/mcp --header "Authorization: Bearer wht_YOUR_KEY"

Claude Desktop and claude.ai

Add a custom connector and paste the MCP link with your key built in: https://wht.day/mcp/wht_YOUR_KEY.

ChatGPT

With developer mode on, add the same MCP link as a connector. Or build a custom GPT and import https://wht.day/api/v1/openapi.json as an action. Choose API key authentication, type Bearer, and paste your key.

Cursor, VS Code and other clients

Any client that supports remote HTTP servers can connect with the endpoint and the header. The exact keys depend on the client; the usual shape is:

{
  "mcpServers": {
    "wht": {
      "type": "http",
      "url": "https://wht.day/mcp",
      "headers": {
        "Authorization": "Bearer wht_YOUR_KEY"
      }
    }
  }
}

Testing with curl

curl -s https://wht.day/mcp \
  -H "Authorization: Bearer wht_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

How does the server behave?

  • Stateless. Each POST is handled on its own and answered with plain JSON. There are no MCP sessions and no event stream to resume.
  • Dates. Dates are YYYY-MM-DD. A save belongs to the day you saved it, in your account's timezone, which get_profile reports.
  • Excerpts and full text. Search and list results include a 600-character excerpt. Pass full: true or call get_save for the complete text. Every save carries its original url and an archiveUrl for the copy kept in WHT.day.
  • Timelines use AI. Building a new timeline takes a few seconds, and the API builds at most 40 new timelines per account per day. Opening a timeline that already exists is unlimited.
  • Instructions for the AI. When a client connects, the server tells it how to research the archive: find saves, read the ones it will rely on in full, use timelines for how a story developed, and cite the original url for every claim.

What errors can it return?

HTTPJSON-RPC codeMeaning
401-32001No key, an unknown or revoked key, or an account without an active paid subscription.
405-32000GET or DELETE on the endpoint. Only POST is accepted.
500-32603An internal error. It is safe to retry, since every tool is read-only.

A 401 response looks like this:

{
  "jsonrpc": "2.0",
  "error": {
    "code": -32001,
    "message": "Missing or invalid WHT.day API key."
  },
  "id": null
}

A tool that can't do what was asked, for example because no save has that id or the daily timeline limit is reached, returns a normal result with isError: true and a plain-English message.

Which tools are available?

The server offers 8 tools. All of them are read-only.

get_profileArchive overview

The archive's first and last dates, the number of days with saves, and the account's timezone.

No parameters.

search_savesSearch saves

Searches the archive by meaning and by keywords. Each result includes an excerpt and the passage that matched. The query accepts the same shortcuts as the app: from:@handle, site:reuters.com, type:post, after:2026-09, before:2026-10-01, has:note and "exact phrase".

ParameterTypeDescription
qrequiredstringWhat to search for, including any shortcuts
mode"broad" | "exact"broad (default) matches meaning and word forms; exact needs every word
sort"relevance" | "newest" | "oldest"Result order; relevance by default
limitinteger 1–80Default 25
fullbooleanInclude the complete text of each result

list_savesList saves

Saves, newest first, optionally between two dates and of one type. Page through them with offset and nextOffset.

ParameterTypeDescription
fromYYYY-MM-DDEarliest day
toYYYY-MM-DDLatest day
type"article" | "post" | "video" | "image" | "note"Only saves of this type
limitinteger 1–200Default 50
offsetintegerWhere to start, from a previous nextOffset
fullbooleanInclude complete text instead of excerpts

get_saveRead a save

One save with its complete text, your note, the original url and the archiveUrl of the saved copy.

ParameterTypeDescription
idrequiredintegerThe save's id, from a search or list result

get_dayRead a day

Everything saved on one day, with complete text.

ParameterTypeDescription
daterequiredYYYY-MM-DDThe day, in the account's timezone

list_timelinesList timelines

The narrative timelines already built in the archive, with their titles, summaries and sizes.

No parameters.

get_timelineGet a timeline

A dated narrative timeline anchored on one save, with a line on what each entry added. It is built on first request, which takes a few seconds; after that it opens instantly. Uses AI when the timeline doesn't exist yet.

ParameterTypeDescription
seedItemIdrequiredintegerThe save the timeline is anchored on
modestringexact (default) follows one story; broad follows the whole subject; or a search timeline's mode from list_timelines
fullbooleanInclude the complete text of each entry

Prompt: draft_original_posts

The server also offers one prompt. draft_original_posts takes a topic, plus an optional count (default 3) and platform, such as X, LinkedIn or a newsletter. It has the AI research the topic in your archive and draft original posts in your voice, with the original url cited for every claim and the saves it used listed at the end.

Questions

MCP server questions

Who can use the WHT.day MCP server?
Anyone with a paid WHT.day subscription, monthly or annual. Create a key in Settings under API access. Keys stop working while a subscription is inactive and work again when it resumes; free trials don't include API access.
Can an AI change or delete anything in my archive?
No. The MCP server is read-only. It can search, read and build timelines, but it has no tool that saves, edits or deletes anything.
Can it read other people's archives?
No. A key only ever reads the archive of the account that created it.
What happens if my key leaks?
Revoke it in Settings under API access and create a new one. A revoked key stops working on its next request. WHT.day stores only a hash of each key, so a lost key can't be shown again.
Does the MCP server cost extra?
No. It is included in the subscription. Building new timelines uses AI, so the API builds at most 40 new timelines per day per account; opening a timeline that already exists is unlimited.
Is there a REST API as well?
Yes. The same operations are available as a REST API under https://wht.day/api/v1, described by an OpenAPI file at https://wht.day/api/v1/openapi.json, with the same key.

Give your AI your archive

Your saves, ready for any AI you use

Save the news as you read it. Then let your AI search it, read it and turn it into timelines and original writing with sources.

Get started

$8/month or $68/year. Cancel anytime from Settings. Works on your phone: paste or share any link. Browser extension optional, for your desktop later.