RaiderRouter MCP

Use with AI

One URL. Paste it into your client, approve the browser prompt, and your agent can reach every source your keys pay for. There is no token to copy.

Your connection link

https://raiderrouter.com/mcp
  1. Add the URL above to your client as an MCP server.
  2. Your client opens a browser. Sign in with Google and approve.
  3. Your client lists the tools your keys activate.

The keys on this account are the ones your agent calls with. Add more on Sources.

Choose your client

Use the path verified for your client. Authentication support differs, even when every client points at the same endpoint. You can run the protocol check yourself on Playground.

Every path below uses the one URL above and Streamable HTTP. There is no client id to enter.

Without a browser sign-in Advanced

Without a browser sign-in

Use this when a script or headless client cannot open the browser sign-in. Every bearer command below is filled in with the token you create here.

Tokens belong to an account, so this is the step that needs one.

A client and a manual token are wound down separately: disconnect a client from Connected MCP clients.

ChatGPT OAuth

Add a connection in developer mode. ChatGPT registers its own OAuth client, so there is no client id to type.

Paste this

https://raiderrouter.com/mcp

No config file. This client is set up in its own settings screen.

Where to go

  1. Open Settings, then Security and login, and turn on Developer mode.
  2. Open chatgpt.com/plugins and choose the plus button.
  3. Give the connection a name and a description.
  4. Under Connection, paste the endpoint including its /mcp path.
  5. Create the connection.
  6. Review the tools and metadata discovered from the server.

Sign in

ChatGPT registers its own OAuth client with the server, so there is no client id or secret to type.

Who can use it

Developer mode must be on. The vendor says its availability can depend on account and workspace policy.

If it fails

A published plugin keeps the reviewed tool metadata it was approved with. A developer mode connection has a Refresh action for when the tools change.

We have not walked the in-product flow ourselves. These are the vendor’s published steps as of the review date, and the client registration comes from its plugin auth page (developers.openai.com/plugins/build/auth).

Streamable HTTP. The URL goes in the Connection field.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Claude on the web OAuth

Add a custom connector. This path signs in through the browser and takes no manual header.

Paste this

https://raiderrouter.com/mcp

No config file. This client is set up in its own settings screen.

Where to go

  1. Open Customize, then Connectors.
  2. Choose the plus button, then Add custom connector.
  3. Paste the RaiderRouter endpoint as the remote MCP server URL.
  4. Skip Advanced settings, then choose Add.
  5. Enable it for a conversation from the plus button in the chat, under Connectors.
  6. On Team and Enterprise an Owner adds it under Organization settings, then Connectors.
  7. That Owner chooses Custom, then Web, and members choose Connect to sign in.

Sign in

Claude runs the sign-in itself and takes no manual header. Team and Enterprise members choose Connect.

Who can use it

Free, Pro, Max, Team and Enterprise, on the web, Claude Desktop, Cowork and the mobile apps. Free accounts get one custom connector. Team and Enterprise need an Owner first.

If it fails

A URL only your own machine can reach will fail, because the request comes from Anthropic servers. A server on a private network, behind a VPN, or blocked by a firewall will not connect.

The connection is made from Anthropic servers rather than from your own machine.

Streamable HTTP. The URL goes in the custom connector URL field.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Claude Desktop OAuth

Add the same custom connector the web client uses, from the desktop settings window.

Paste this

https://raiderrouter.com/mcp

Where to go

  1. Open Settings, then Connectors.
  2. Add the same custom connector the web client uses, and paste the endpoint.
  3. Approve the sign-in, then restart the client if tools do not appear.
  4. To connect from your own machine instead, use the file below.
  5. On macOS the file is at ~/Library/Application Support/Claude/claude_desktop_config.json.

Or paste this: Local bridge

Into %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "raiderrouter": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://raiderrouter.com/mcp",
        "--transport",
        "http-only"
      ]
    }
  }
}

Sign in

Choose Connect on the connector, or let mcp-remote open the sign-in.

Who can use it

Custom connectors follow the same account as the web client. The file path is per machine.

If it fails

Edits to the file take effect only after a full restart of Claude Desktop.

Anthropic routes a server with a public URL to the connector. Its pages name the menu both Settings then Connectors and Customize then Connectors; it is one connector list. The file locations and the bridge block come from the mcp-remote README, not from Anthropic.

Streamable HTTP. The URL goes in the custom connector URL field, or the mcp-remote argument in the file.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Claude Code OAuth recommended

Add the URL, then approve RaiderRouter when Claude opens your browser.

Where to go

  1. Run the command below in the project you want the server in.
  2. Add --scope user to reach it from every project on this machine.
  3. Add --scope project to share it with the repository.
  4. Then sign in as described below.

Paste this

claude mcp add --transport http raiderrouter https://raiderrouter.com/mcp

Or paste this: Bearer fallback

claude mcp add --transport http raiderrouter https://raiderrouter.com/mcp --header "Authorization: Bearer YOUR_TOKEN"

Sign in

Run /mcp in a session, or run claude mcp login raiderrouter. Claude opens your browser.

Who can use it

Any Claude Code account. Project scope shares the server with the repository.

If it fails

A .mcp.json entry with a url and no type key is read as a local command and skipped. Set the type key to http.

Confirm with claude mcp list. Registered it as raider before 2026-09-10? Use that name in the login command.

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the argument after the server name.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Codex CLI OAuth recommended

Register RaiderRouter, then sign in through the browser.

Where to go

  1. Run the first line to register the server.
  2. Run the second line to open the browser sign-in.
  3. Confirm the registration with codex mcp list.

Paste this

codex mcp add raiderrouter --url "https://raiderrouter.com/mcp"
codex mcp login raiderrouter

Or paste this: Bearer environment-variable fallback

Into ~/.codex/config.toml

[mcp_servers.raiderrouter]
url = "https://raiderrouter.com/mcp"
bearer_token_env_var = "RAIDER_MCP_TOKEN"

Sign in

Run codex mcp login raiderrouter, then approve in the browser.

Who can use it

Any Codex CLI account.

If it fails

Two [mcp_servers.raiderrouter] tables in config.toml is a parse error for the whole file. Edit the one codex mcp add wrote, or paste this one instead of running it. If the server is missing from a session, run codex mcp list and check the name you registered.

Registered it as raider before 2026-09-10? Use that name in the login command. The bearer table replaces the [mcp_servers.raiderrouter] table codex mcp add wrote; keep one, not both. Set RAIDER_MCP_TOKEN in the environment Codex runs in. The ChatGPT desktop app, the Codex CLI and the IDE extension share this configuration.

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the --url argument.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Cursor OAuth

Add one entry to the MCP configuration file, then let Cursor open the sign-in.

Where to go

  1. Create the file named below in your project, or in your home folder for every project.
  2. Paste the block below.
  3. Cursor runs the sign-in itself for a server that requires it.

Paste this

Into .cursor/mcp.json

{
  "mcpServers": {
    "raiderrouter": {
      "url": "https://raiderrouter.com/mcp"
    }
  }
}

Sign in

Cursor states OAuth support for servers that require it and runs the sign-in itself. No header is needed.

Who can use it

Any Cursor account that can edit its own MCP configuration file. An enterprise team with an MCP allowlist must list this server URL, or it is blocked.

If it fails

Adding a type key, or pointing at the /sse path, fails. This server answers 404 there.

The global file is ~/.cursor/mcp.json and covers every project.

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the url key.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

VS Code with Copilot OAuth

Add one entry to the workspace MCP file, then start the server from the palette.

Where to go

  1. Create the file named below in your workspace.
  2. Paste the block below.
  3. Run MCP: List Servers, choose the server, then start it.
  4. Trust the server when VS Code asks the first time it starts.

Paste this

Into .vscode/mcp.json

{
  "servers": {
    "raiderrouter": {
      "type": "http",
      "url": "https://raiderrouter.com/mcp"
    }
  }
}

Sign in

VS Code’s configuration reference documents the browser sign-in for an entry carrying an oauth block with a client id. It shows the bare entry as unauthenticated. Use the bearer header if no browser opens.

Who can use it

Organisations can centrally manage access to MCP servers through GitHub policies.

If it fails

The wrapper key here is servers, not mcpServers. An Agent Host session does not read .vscode/mcp.json, so use a workspace .mcp.json or ~/.copilot/mcp-config.json there.

A user-level file covers every workspace and is edited from the palette. The headers and oauth fields are in the MCP configuration reference (code.visualstudio.com/docs/agents/reference/mcp-configuration).

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the url key.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Cline Bearer token

Add one entry with the streamable HTTP type and your token in the header.

Where to go

  1. Create a token above.
  2. Open the MCP Servers icon in the Cline panel, then the Configure tab.
  3. Choose Configure MCP Servers, which opens the settings file.
  4. Paste the block below into that file.
  5. Keep the type key. Without it Cline tries the older transport.

Paste this

Into the settings file the Configure MCP Servers button opens

{
  "mcpServers": {
    "raiderrouter": {
      "type": "streamableHttp",
      "url": "https://raiderrouter.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Sign in

There is no browser sign-in. Use the token, or bridge through mcp-remote instead.

Who can use it

Any Cline installation. The token carries the account, so keep the file private.

If it fails

Cline defaults to the older SSE transport, and this server answers 404 there. Keep the type key.

The Remote Servers tab adds the same server without JSON: name, URL, transport Streamable HTTP, then Add Server. The Cline command line keeps its own servers in ~/.cline/mcp.json.

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the url key.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Zed OAuth

Add one context server to your settings file, then let Zed sign you in.

Where to go

  1. Open your settings file with zed: open settings file. Or add the server from Settings, then AI, then MCP Servers with Add Server, then Add Remote Server.
  2. Paste the block below inside context_servers.
  3. Leave the headers block out, so the sign-in can run.

Paste this

Into settings.json

{
  "context_servers": {
    "raiderrouter": {
      "url": "https://raiderrouter.com/mcp"
    }
  }
}

Sign in

Zed prompts for the standard MCP sign-in when the entry has no Authorization header.

Who can use it

Any Zed installation that can edit its own settings file.

If it fails

An Authorization header switches the sign-in off, and that header is sent as the credential.

Zed calls these context servers. The wrapper key is not mcpServers.

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the url key.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Windsurf and Devin Desktop Check with client

Windsurf is now Devin Desktop. This entry is documented for the older Cascade agent.

Less certain We have read this path rather than run it. Confirm it in the client documentation.

Where to go

  1. Open the configuration file named below.
  2. Paste the block below. The remote key is serverUrl, and url also works.
  3. Restart the client, then check the server is listed in Cascade.
  4. Confirm the current path in the client documentation before you rely on it.

Paste this

Into ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "raiderrouter": {
      "serverUrl": "https://raiderrouter.com/mcp"
    }
  }
}

Sign in

Devin Desktop states OAuth support for each transport but documents no sign-in path. Use a token in a headers block if no browser opens.

Who can use it

The documented file covers the Cascade agent. A newer agent in the same client reads a different file. Once a team allowlists one MCP server, every server not on the list is blocked.

If it fails

A new tab may open the newer agent, which does not read this file. Check which agent is running.

Treat this entry as less certain than the other clients on this page.

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the serverUrl key.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Grok OAuth

Add RaiderRouter as a custom MCP connector in Grok.

Paste this

https://raiderrouter.com/mcp

No config file. This client is set up in its own settings screen.

Where to go

  1. Open grok.com/connectors.
  2. Choose New Connector, then Custom.
  3. Paste the RaiderRouter endpoint as the MCP server URL.
  4. Complete the authentication Grok asks for.
  5. Grok discovers the tools and makes them available in conversations.

Sign in

Grok asks for whatever authentication the server requires when the connector is added.

Who can use it

Connectors are available to all Grok users. Business and Enterprise need an admin to provision the connector in the cloud console first.

If it fails

The server must be reachable over the public internet. A server on your own machine needs a tunnel.

Grok makes the tools available in conversations itself. There is no per-conversation switch to turn on.

Streamable HTTP. The URL goes in the server URL field.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Any other client Bearer token

Bridge the endpoint into any client that runs a local command.

Where to go

  1. Register the command below as a local MCP server in your client.
  2. npx fetches mcp-remote on demand, so there is nothing to install first.
  3. Create a token above for a client that cannot open a browser.
  4. Send the token as an Authorization: Bearer header on every request.

Paste this

npx -y mcp-remote https://raiderrouter.com/mcp --transport http-only

Or paste this: Handshake check, with a token

curl -sS -X POST https://raiderrouter.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2026-07-28", "capabilities": {}, "clientInfo": {"name": "curl", "version": "1"}}}'

Sign in

mcp-remote runs the browser sign-in for clients that cannot. A token works instead.

Who can use it

No account gating. Any client that can run a local command can reach this.

If it fails

Without the Accept header naming both JSON and event streams the server answers 406.

Keep the token in a secret store or environment variable and never commit it. The mcp-remote README warns that Cursor, the Codex CLI and Claude Desktop on Windows mangle spaces inside args. Write the header as Authorization:${AUTH_HEADER} with the space inside the variable, or pass --header-file.

The endpoint

https://raiderrouter.com/mcp

Streamable HTTP. The URL goes in the first argument after mcp-remote.

Client documentation · Reviewed 2026-09-11. Next review due 2026-12-10.

Starter prompts (7)

Once connected through a verified path above, paste a prompt into your MCP client. Start with the risk-first prompt to write down your limits.

How this works

Each prompt names its tools and the limits the AI must respect. ChatGPT needs developer mode, and we publish the vendor’s steps rather than a flow we have walked.

Clients that support MCP prompts show the prompts your connected sources can serve in their picker. Other clients work by copy and paste.

You can run these tools in Playground first, without setting up a client.

For standing briefs and state blocks that carry work between sessions, see Getting started.

Research a trade inside my risk limits · Risk-first

Define the loss you can accept before the AI looks for upside.

Uses: get_quote, get_price_history, get_company_fundamentals, get_recent_filings, get_volatility_regime

You are my risk-first research partner. Do not begin the market
analysis until we have completed this profile. Ask me only for any blanks:

- Candidates: TICKERS
- Holding period: DAYS, WEEKS, or MONTHS
- Maximum loss on one idea: DOLLARS or PERCENT OF PORTFOLIO
- Maximum position size: PERCENT OF PORTFOLIO
- Maximum total exposure across open ideas: PERCENT OF PORTFOLIO
- Instruments allowed: LONG SHARES ONLY, SHORTING, or OTHER
- Hard constraints: NO LEVERAGE, NO EARNINGS HOLDS, or MY OWN RULES

Never invent a missing limit. If maximum loss is blank, you may research the
idea, but you may not recommend a position size.

Once the profile is complete, for each candidate:
1. Pull the latest available price and one year of daily bars. Before using the
   price, state its as_of timestamp and market session or date so an end-of-day
   fallback cannot be mistaken for a live quote. Report trend, realized
   volatility, ATR as a percentage of price, and maximum drawdown.
2. Pull company fundamentals and recent filings. State the strongest bull case,
   the strongest bear case, and one fact that would invalidate each case.
3. Check the market volatility regime and explain how it changes the risk.
4. Define an entry condition, an invalidation level based on evidence rather
   than a round number, and the loss per share at that level.
5. If my risk limits are complete, calculate a maximum position size from the
   smaller of my loss limit and position-size limit. Show the arithmetic.

Finish with a comparison table and a clear outcome for each name: research
further, wait for the entry condition, or reject. Do not place an order. Do not
force a trade when none fits my limits.

Before you conclude anything, read the _provenance block on every response.
State the as_of date of each figure you rely on. If a field appears in the
unavailable list, say so by name and do not substitute a value for it, do not
treat it as zero, and do not infer it from something else. If the data you need
was not available, say that plainly instead of answering anyway. If
upgrades_available is non-empty, you may mention once, at the end, which
unconnected vendor, if connected and entitled, would come earlier in RaiderRouter’s
current routing order for the requested capability, and why. This is
a routing-order hint, not a data-quality judgment and not evidence that the
figures you were given are wrong.
Morning brief on my watchlist · Any appetite

A daily read on what moved, what is stale, and what changed underneath.

Uses: get_quote, get_price_history, get_volatility_regime, get_recent_filings

You are my pre-market analyst. My watchlist is: AAPL, NVDA, MSFT.

For each symbol:
1. Get the latest available price and the last 3 months of daily bars. State
   the price’s as_of timestamp and market session or date before comparing it
   with the bars.
2. Report the move since the prior close, and where price sits against its
   20-day and 50-day averages.
3. Flag any RSI above 70 or below 30, and say what the ATR implies about a
   normal day’s range, so I can tell a real move from noise.
4. Check for filings in the last 5 trading days and name anything material.

Then get the volatility regime once and tell me whether the market is pricing
calm or stress, and whether the near-term curve is in contango or backwardation.

Finish with a table: symbol, last price, as_of, percent move, one line on what
changed. Rank by what most deserves my attention, and say why for the top one.

Before you conclude anything, read the _provenance block on every response.
State the as_of date of each figure you rely on. If a field appears in the
unavailable list, say so by name and do not substitute a value for it, do not
treat it as zero, and do not infer it from something else. If the data you need
was not available, say that plainly instead of answering anyway. If
upgrades_available is non-empty, you may mention once, at the end, which
unconnected vendor, if connected and entitled, would come earlier in RaiderRouter’s
current routing order for the requested capability, and why. This is
a routing-order hint, not a data-quality judgment and not evidence that the
figures you were given are wrong.
Screen for quality, not excitement · Conservative

Balance-sheet first. Built to talk you out of things.

Uses: get_company_fundamentals, get_price_history, get_macro_series

You are a conservative equity analyst. I care about not losing money
more than I care about upside. Candidates: KO, JNJ, PG, ABBV.

For each:
1. Pull fundamentals. Report margins, debt levels, and payout ratio if published.
2. Pull 1 year of daily bars and report drawdown from the 52-week high, plus
   realized volatility.
3. Tell me the single most likely way this specific business gets impaired over
   five years. Be concrete about that company, not generic about equities.

Then pull the 10-year Treasury yield and tell me honestly whether each name’s
yield compensates me for holding equity risk over holding the risk-free rate.

Rank them, then argue AGAINST your own top pick for a paragraph. If none of them
clear a conservative bar right now, say none of them do. That is a valid answer
and I would rather hear it than a forced ranking.

Before you conclude anything, read the _provenance block on every response.
State the as_of date of each figure you rely on. If a field appears in the
unavailable list, say so by name and do not substitute a value for it, do not
treat it as zero, and do not infer it from something else. If the data you need
was not available, say that plainly instead of answering anyway. If
upgrades_available is non-empty, you may mention once, at the end, which
unconnected vendor, if connected and entitled, would come earlier in RaiderRouter’s
current routing order for the requested capability, and why. This is
a routing-order hint, not a data-quality judgment and not evidence that the
figures you were given are wrong.
Momentum scan with a stop already defined · Aggressive

Trend and relative strength, with the exit decided before entry.

Uses: get_price_history, get_quote, get_volatility_regime

You are a momentum trader. Candidates: NVDA, AMD, AVGO, SMCI.

Before sizing any position, ask me for every missing item below:

- Dollar loss budget per position: DOLLARS
- Portfolio size: DOLLARS
- Maximum position size: DOLLARS or PERCENT OF PORTFOLIO
- Maximum total exposure across open positions: DOLLARS or PERCENT OF PORTFOLIO

Never invent, infer, or assume any of these numbers. You may research the
candidates while a number is missing, but you must not size a position until I
have supplied all four limits.

For each, pull 6 months of daily bars and report:
1. Price relative to the 20-day and 50-day averages, and whether the shorter is
   above the longer.
2. MACD state and whether the histogram is expanding or contracting.
3. RSI, and specifically whether it is strong or already overextended.
4. ATR as a percentage of price.

Then, for any name in an established uptrend, propose an entry, a stop placed at
a multiple of ATR rather than a round number, and the resulting risk per share.
Once all four limits are supplied, size every position so the same dollar amount
is at risk on each without exceeding the dollar loss budget, maximum position
size, or maximum total exposure. Show the arithmetic.

Check the volatility regime before you conclude. If the market is in stress,
say plainly that momentum setups fail more often in that environment and reduce
your conviction accordingly.

Do not tell me about a setup without telling me where it is wrong.

Before you conclude anything, read the _provenance block on every response.
State the as_of date of each figure you rely on. If a field appears in the
unavailable list, say so by name and do not substitute a value for it, do not
treat it as zero, and do not infer it from something else. If the data you need
was not available, say that plainly instead of answering anyway. If
upgrades_available is non-empty, you may mention once, at the end, which
unconnected vendor, if connected and entitled, would come earlier in RaiderRouter’s
current routing order for the requested capability, and why. This is
a routing-order hint, not a data-quality judgment and not evidence that the
figures you were given are wrong.
Review what I already own · Any appetite

Held positions against the thesis you had when you bought them.

Uses: get_quote, get_price_history, get_company_fundamentals, get_recent_filings

Review my positions. Replace this list with your own, including why
you bought each one:

- TICKER, bought at PRICE, because REASON
- TICKER, bought at PRICE, because REASON

For each position:
1. Pull the latest available price and report its as_of timestamp and the
   market session or date before calculating the move from my entry. Do not describe
   the price as live or current unless _provenance explicitly proves it.
2. Pull 6 months of bars: is the trend still intact, or has it broken?
3. Pull fundamentals and check whether the reason I gave still holds.
4. Check recent filings for anything that contradicts my thesis.

Then answer one question per position, directly: is the reason I bought this
still true? Not "is it up", which is a different question and the one that traps
people. If the thesis is broken but the position is profitable, say so clearly.
If it is intact but the position is down, say that too.

End with only the positions where the thesis has actually changed. If nothing
has changed, say nothing has changed rather than manufacturing an action.

Before you conclude anything, read the _provenance block on every response.
State the as_of date of each figure you rely on. If a field appears in the
unavailable list, say so by name and do not substitute a value for it, do not
treat it as zero, and do not infer it from something else. If the data you need
was not available, say that plainly instead of answering anyway. If
upgrades_available is non-empty, you may mention once, at the end, which
unconnected vendor, if connected and entitled, would come earlier in RaiderRouter’s
current routing order for the requested capability, and why. This is
a routing-order hint, not a data-quality judgment and not evidence that the
figures you were given are wrong.
Is this a real move or just loud? · Speculative

Separates retail attention from anything fundamental. Deliberately sceptical.

Uses: get_crowd_attention, get_price_history, get_quote, get_company_fundamentals

I keep seeing TICKER mentioned. Work out whether anything is actually
happening.

1. Pull crowd attention for it and report mention counts and rank. Treat this as
   a measure of how loud a forum is, nothing more. It is not a fundamental, not a
   flow, and not positioning.
2. Pull 3 months of daily bars. Has price and volume actually moved, or is the
   attention detached from the tape?
3. Pull fundamentals. Is there a business here, or a ticker?

Then tell me which of these it looks like:
- attention following a real move that already happened
- attention with no move, which is noise
- a move with no attention, which is the only one of the three that is
  occasionally interesting

Be blunt. If the honest answer is that this is a crowded ticker with nothing
underneath it, say exactly that. Do not soften it into a balanced view, and do
not tell me what the crowd thinks the catalyst is as though that made it one.

Before you conclude anything, read the _provenance block on every response.
State the as_of date of each figure you rely on. If a field appears in the
unavailable list, say so by name and do not substitute a value for it, do not
treat it as zero, and do not infer it from something else. If the data you need
was not available, say that plainly instead of answering anyway. If
upgrades_available is non-empty, you may mention once, at the end, which
unconnected vendor, if connected and entitled, would come earlier in RaiderRouter’s
current routing order for the requested capability, and why. This is
a routing-order hint, not a data-quality judgment and not evidence that the
figures you were given are wrong.
What is the macro backdrop doing to my book? · Any appetite

Rates, unemployment and inflation, connected to what you hold.

Uses: get_macro_series, get_volatility_regime, get_price_history

Give me the macro picture and connect it to my holdings, which are
concentrated in: SECTOR, SECTOR.

1. Pull the 10-year Treasury yield, unemployment, and CPI. For each, report the
   latest print, its date, and the direction of the last several observations.
   Say clearly how stale each series is, since macro data is published with a
   lag and a monthly series can be weeks old.
2. Pull the volatility regime and interpret the term structure.
3. Explain the specific transmission mechanism from these readings to the
   sectors I named. Not "rates affect equities", which is true of everything.
   Name the actual channel.

Finish with the one macro reading that would most change your view if it moved,
and what number would do it.

Before you conclude anything, read the _provenance block on every response.
State the as_of date of each figure you rely on. If a field appears in the
unavailable list, say so by name and do not substitute a value for it, do not
treat it as zero, and do not infer it from something else. If the data you need
was not available, say that plainly instead of answering anyway. If
upgrades_available is non-empty, you may mention once, at the end, which
unconnected vendor, if connected and entitled, would come earlier in RaiderRouter’s
current routing order for the requested capability, and why. This is
a routing-order hint, not a data-quality judgment and not evidence that the
figures you were given are wrong.

Every endpoint (729 across 9 vendors)

Reach documented endpoints beyond the curated tools using your connected keys. The raw lane returns each vendor’s own response, read-only.

How this works

list_vendor_endpoints lists endpoints; describe_vendor_endpoint shows parameters and an example. call_vendor_endpoint runs the read with your stored key.

  • Reads only. Requests use GET; trading and money-movement routes are refused by name.
  • Your keys only. You see endpoints for your connected vendors, and nobody else’s.
  • Your key stays here. It never appears in a response or activity log.
  • Vendor responses. Raw answers keep the vendor’s fields and units. Prefer a curated tool where one covers the same ground.

Uncatalogued endpoints remain reachable by path under the same rules. The response identifies them as uncatalogued.

Documented endpoints reachable per vendor
Vendor Endpoints Families
Financial Modeling Prep 230 24
Alpha Vantage 129 13
Finnhub 111 16
ORTEX 95 17
Massive 54 12
Alpaca 49 9
Tiingo 33 11
SnapTrade 16 2
Tradier 12 5

Counted from the catalogue this server is running, not written down here, so these numbers cannot drift away from what you actually get. Vendors we serve without a key of yours are not in this list: there is nothing of yours to send.

Provenance

Read it before you trade on the number underneath it.

Every response carries a _provenance block.

It names which vendor answered, when the figure was true, and lists under unavailable everything that could not be provided and why. A field named there was not published. It is not zero. Tell your agent to read it, because a number with no date is not a fact.

None of this is investment advice, and none of it decides anything for you.