Ask your AI where Treasury yields are. On its own, it reaches for a search result or a raw series and works out the rest by itself. When it prereasons, one get_context call brings back the context already worked out: the 30 year yield at 5.67% on 2026-10-07, the highest reading on the US Treasury's daily par yield curve since July 2001.
[An agent asks where Treasury yields are and what the Fed last decided; get_context with briefing macro.rates answers with the 30 year and 10 year Treasury yields and 10 year breakeven inflation, PreReason's calculation, each with its 7, 30 and 90 day changes, its percentile and its date, and the Fed funds target range with its vote, from a served answer of 2026-10-16]
Why prereason?
- The analysis, and the data behind it. Each briefing arrives with the reading done: the trend over several windows, where a value sits in its own history, a company's rank among its peers and, where read, its own guidance.
- Every figure dated, every source named. Your agent can say when a number is from and where it came from.
- One call, a whole briefing. A briefing gathers the series a question needs, so the turns go to the answer rather than to lookups.
- The markets in one place, among them rates and Treasuries, the Fed, FX, commodities, macro, listed companies across several markets, and Bitcoin.
- It describes; it never advises. Briefings say what the data shows. They never say what to buy, sell or hold.
- Quick to set up. One block of config for Claude, Cursor, Codex or VS Code, through the npm bridge or the remote server. The catalogue tools need no key; for the rest, the bridge gives you one link to approve in your browser and the key arrives in the running session; the remote server takes your API key as a header.
What it covers
PreReason gives an AI agent market context it can reason with. Ask what a listed company reported, where Treasury yields stand or what the Federal Reserve decided, and one call returns a briefing reasoned in advance: the figures with their dates and sources, a one line reading, trend direction over several windows, confidence scores, percentile ranks and correlations, and in the deeper briefings a regime label and a plain language narrative. Briefings span asset classes and regions, among them listed companies built from each company's own reports and filings, macro and the economic calendar, interest rates and Treasury yields, bonds, currencies, commodities and energy, and Bitcoin. The set grows as markets and asset classes are added; list_briefings and list_metrics always return the current one. Each briefing carries the figures behind its readings, every figure is dated, and every briefing names its sources. It is served over MCP (a remote server and an npm bridge) and over REST, as Markdown or JSON. An AI agent starts at https://www.prereason.com/agents.md, which says how to connect, which briefings it can read and how to answer from them.
[How it connects: your agent (Claude, Cursor, Codex, VS Code) calls list_briefings, then get_context, through the npm bridge or the remote server at api.prereason.com/api/mcp; PreReason answers with the briefing, every figure dated and every source named. With no key yet, the first briefing call shows one approve link, and the key arrives in the bridge once a person clicks Approve.]
Quick Start
Option 1: Claude Desktop, no key needed
Requires Node.js 18+, and nothing else: the bridge has no dependencies.
Add this to claude_desktop_config.json and restart Claude Desktop:
The catalogue tools work at once. To connect your account, tell Claude "connect me to PreReason", or ask for any briefing: either way Claude shows one link, https://www.prereason.com/claim/PR-XXXX-XXXX. Open it, sign in or create an account, click Approve. The key arrives in the bridge on its own, is saved to ~/.prereason/credentials.json, and is never shown; ask Claude whether PreReason is connected and it names your plan. Nothing is created in your account until you click Approve, and the link is asked for when you need it, so it never runs out while Claude sits open. If your account already holds as many API keys as it allows, the answer says so instead of looping: revoke a key under Settings on prereason.com, then ask to connect again, or set PREREASON_API_KEY to a key you already have.
Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
Already have a key? Add it to the env block as "PREREASON_API_KEY": "pr_live_..." and the bridge never asks.
Option 2: Direct HTTP with an API key (Claude Code, Cursor, Windsurf, Codex, Gemini CLI, VS Code, scripts)
Clients that hold their own config can call the endpoint directly, with the key as a header:
Windsurf uses serverUrl instead of url; Gemini CLI uses httpUrl; Codex uses url plus bearer_token_env_var in config.toml. No key yet? Point the client at the endpoint without a header to browse the catalogue, then create a key on the website (below) and add the header.
Option 3: Claude.ai and Claude Desktop custom connector
- In Claude, open Customize, then Connectors, then "+ Add", then Add custom connector.
- Name it PreReason and give the address https://api.prereason.com/api/mcp.
- Choose Sign in now, even where Claude marks No sign-in as Detected.
- Click Add, then Allow on the PreReason screen. No account yet? Make one there.
- Then, in a new chat, ask: "What are rates, liquidity and the dollar doing today?"
Claude's Free plan allows one custom connector at a time. On a Claude Team or Enterprise plan, an owner adds connectors for the organization, then each person clicks Connect.
Get an API Key
Three ways. The hosted server never hands out a key inside a session and never asks for one.
Through this bridge. Run it with no key set: when you ask your assistant to connect PreReason, or an answer needs a key, it asks PreReason for access on your behalf and shows one approve_url, in its log and in the answer. Open it, sign in or create your account, click Approve, and the bridge saves the key, attached to your account and named Agent: <client_name>.
From code, for an agent with no browser. POST https://api.prereason.com/api/agent/claims (no auth), show the human the approve_url, then poll GET https://api.prereason.com/api/agent/claims/{claim_code} with Authorization: Bearer <claim_token> until status is approved. Docs: prereason.com/docs#agent-access.
On the website. Sign up at prereason.com/signup, then Dashboard > Settings > API Keys. Keys start with pr_live_.
MCP Tools
The npm bridge and the Claude Desktop extension add one tool of their own, connect_account, which the bridge answers itself and the remote server does not offer: with no key yet it returns the one link to approve, and once approved it says the account is connected and on which plan. It never shows a key and never asks for one.
Market Briefings
list_briefings always returns the current set, and prereason.com/briefings shows each one. Which plan reads which briefing is on the pricing page.
Company Briefings
equities.company reads one listed company per call, composed from its own reports (filings with its home market's regulator; for India, its own published results), each figure dated and sourced. Which plan reads which market's company briefings is on the pricing page. It describes; it never says what to do.
[An agent asks what NVIDIA reported, how it ranks among its peers and what its guidance is; get_context with briefing equities.company and entity NVDA answers with quarterly revenue, operating margin, free cash flow and the company's own revenue guidance range, each with its date, its rank or its stored history, from NVIDIA's filings on SEC EDGAR]
- Name the company with
entity: the ticker or CIK of a company filing with the SEC (NVDA), a Japanese securities code (7203), a Korean stock code (005930), an Indian company's ISIN (INE018A01030), the LEI of a company filing in the UK or of a European company (2138002P5RNKC5W2JZ46) or a Brazilian company's B3 ticker (PETR4).
- Not sure of the code? Call
list_briefings with search, for example "Toyota earnings": the answer lists the matching covered companies, each with the entity to pass.
- Read one part with
block, one of the parts below, or leave it out for the whole briefing. A part counts one call; the whole briefing counts one for each part it carries. Parts are served for today only.
Example Prompts
Once connected, try prompts like:
- "Connect me to PreReason"
- "Show me the macro snapshot"
- "Where are Treasury yields, and what did the Fed last decide?"
- "What did NVIDIA report, and how does it rank among its peers?"
- "How is Bitcoin moving with stocks and the dollar?"
- "List available briefings"
Troubleshooting
"Server disconnected" error
- Ensure Node.js 18+ is installed:
node --version
- Check your API key starts with
pr_live_
- Fully quit Claude Desktop (system tray > Quit) and reopen
Tools not appearing
- Restart Claude Desktop after editing config
- Verify JSON syntax:
node -e "JSON.parse(require('fs').readFileSync('path/to/config','utf8'))"
Windows: "'C:\Program' is not recognized"
If you still see this error, ensure you're using the env block (not --header args) as shown in Quick Start above. If the issue persists, install globally and use node:
- Run:
npm install -g @prereason/mcp
- Use this config (replace
YOUR_USER with your Windows username):
Auth errors on get_context / get_metric
list_briefings, list_metrics, and get_health work without a key
get_context and get_metric require a valid API key, and get_changes a key on the Basic or Pro plan
- Get a key at prereason.com/signup
Other MCP Clients
If your client supports remote HTTP servers, use Quick Start Option 2 above. The stdio bridge package is only needed for clients that require stdio transport (e.g. Claude Desktop).
CLI Usage
Key precedence: PREREASON_API_KEY, then --header, then the credentials file (~/.prereason/credentials.json, or PREREASON_CREDENTIALS_FILE, or --credentials-file), then the claim flow. The file holds the key and which claim issued it, never a claim token. On macOS and Linux the directory is created 0700 and the file 0600; Windows has no mode bits, so the file relies on your profile directory's permissions like every other credential store there.
Claude Desktop extension (.mcpb)
mcpb/manifest.json describes the same bridge as a single click Claude Desktop extension, key optional. To build the bundle: npm install --omit=dev, then npx @anthropic-ai/mcpb pack . from the package directory, and install the resulting .mcpb by double clicking it. Submission to the Claude directory goes through the desktop extension form and is a publisher decision.
No dependencies
The bridge ships its own transports and installs nothing. npm ls on it is one line, npx @prereason/mcp fetches one 23 KB tarball and starts, and the code a security review has to read is the code in this repository.
It used to depend on @modelcontextprotocol/sdk for two classes, a stdio transport and a Streamable HTTP client. That pulled in 91 packages and 25 MB on disk, nearly all of it the SDK server half: Express, Hono, CORS, a rate limiter, an OAuth client and a schema validator, none of which a relay ever calls. lib/stdio.js and lib/streamable-http.js replace the two classes the bridge used, keep their framing and their callbacks, and are covered by the suite under test/.
Links
Privacy Policy
See prereason.com/privacy for data handling practices.
License
MIT