Connection guide

Connect Podcast Alpha to your AI agent

Podcast Alpha MCP is a standard remote MCP server over Streamable HTTP. Any client that can POST JSON-RPC can use it — Claude Code, Claude Desktop, or your own agent loop. Agents pay per call with x402, so there is no account to create and no key to manage. Four steps, and the whole thing is one URL.

Endpoint https://pa-api.knowledgefactory.io/mcp
Step 01

Pay per call with x402.

This is the default way in, and the one built for agents: no account, no signup, no token to manage. An agent with a wallet calls a tool, the server answers 402 with a quote in a PAYMENT-REQUIRED header — what the call costs, which chains it accepts, and where to send it. The agent signs the quote and retries with a PAYMENT-SIGNATURE header, and the result comes back with a settlement receipt in PAYMENT-RESPONSE.

The handshake itself is free. initialize, ping, and tools/list never cost anything and need no credentials, so a client can connect and read the full tool schemas before it spends anything.

Nothing is charged for a call that cannot succeed. Arguments are validated and entity names resolved before any payment settles, so a malformed request, an unknown company, or an expired cursor returns an ordinary error at no cost. Probing an unknown tool name is free too.

If you are wiring this up by hand, keep the paid call behind normal command approval rather than on an agent allowlist, so a human sees the URL, chain, address, and amount before funds move.

Would rather not run a wallet? A beta access token is the alternative, and every step below works the same way — you just add one header.

Step 02

Add the server to your client.

Podcast Alpha MCP is a standard remote MCP server over Streamable HTTP, so most clients need nothing but the URL. Paying with x402 means no header at all — add an Authorization header only if you hold a beta token.

Claude Code

One command, run in the project you want it available in:

claude mcp add --transport http podcast-alpha https://pa-api.knowledgefactory.io/mcp

With a beta token, append the header:

claude mcp add --transport http podcast-alpha https://pa-api.knowledgefactory.io/mcp \
  --header "Authorization: Bearer YOUR_TOKEN"

Project config file

Or commit an .mcp.json at the repo root so the whole team picks it up:

{
  "mcpServers": {
    "podcast-alpha": {
      "type": "http",
      "url": "https://pa-api.knowledgefactory.io/mcp"
    }
  }
}

A beta token adds one line beside "url": "headers": { "Authorization": "Bearer YOUR_TOKEN" }. Keep the real value out of the committed file — inject it through your own secret handling, and gitignore any copy that holds a live token.

Older clients spell the transport field "transport": "streamable-http" instead of "type": "http". Clients that infer transport from the URL need neither.

Claude Desktop or Claude on the web

Add a custom connector pointing at https://pa-api.knowledgefactory.io/mcp. There is no OAuth flow. If you hold a beta token, add it as an Authorization: Bearer YOUR_TOKEN header.

Step 03

Verify the connection.

This asks the server what it offers. It is free, needs no credentials, and is the fastest way to tell a network problem from a payment or token problem:

curl -s -X POST https://pa-api.knowledgefactory.io/mcp \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

You should get five tools back, each publishing both an inputSchema and an outputSchema. That response is the authoritative API reference — it is always current, where this page is only as fresh as its last edit.

Now try a real tool call. With no payment and no token this returns 402 and a quote in the PAYMENT-REQUIRED header, which is the correct answer rather than a failure — it is exactly what your agent will act on. Use -i so you can see the header:

curl -s -i -X POST https://pa-api.knowledgefactory.io/mcp \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"search_statements",
                 "arguments":{"entities":["nvidia"],"stance":"bearish","limit":3}}}'

That header is base64 — decode it to read the price, the accepted chains, and the receiving address. Once payment is attached, or with a beta token in an authorization header, the same call returns 200 and the results.

Step 04

Give your agent the house rules.

Connecting the server tells your agent the tools exist. It does not tell it when to reach for them, how to cite what comes back, or that every page of results costs money. Paste this into your system prompt, CLAUDE.md, or wherever your agent keeps its standing instructions:

You have access to the Podcast Alpha MCP server: a research index of what named
investors, operators, and analysts have actually said on finance podcasts, with
every claim attributed and timestamped.

Reach for it whenever the user asks what experts think about a company or theme,
who is bullish or bearish, what predictions have been made, what catalysts are
coming, or which narratives are gaining attention. It answers questions web
search cannot: who said a thing, when, and whether their past calls worked out.

TOOLS
- search_statements   Attributed, timestamped statements. Needs at least one of
                      query, entities, or speakers. Filter with stance
                      (bullish / bearish / neutral / mixed / informational).
- get_predictions     Forward-looking calls with resolution status
                      (hit / miss / partial / unresolved). Pass
                      include_scorecard: true to weight a speaker by their
                      demonstrated accuracy.
- get_catalysts       Upcoming events flagged on air with their stated timing
                      window. Needs entity or query.
- get_trending_themes Which themes are rising, emerging, fading, or steady.
                      Takes no required arguments.
- get_coverage        Which episodes covered an entity, with ranked takeaways
                      and article links. Needs entity or topic.

RULES
1. Always cite. Every result carries a speaker name, a timestamp deep link, and
   an article link. Reproduce them. Never restate a claim as unattributed fact.
2. These are opinions, not findings. Name who said it and when. Do not convert
   them into recommendations - the corpus is research material, not advice.
3. Respect the coverage window. Every response includes meta.coverage_window.
   If the user asks about something outside it, say so plainly instead of
   guessing or filling the gap from memory.
4. Read meta.warnings and pass them on. speaker_concentration means one voice
   dominates the results. sparse_results means fewer than three matches, so
   supplement with web search and say that you did. lapsed_catalysts_present
   means some windows have passed unresolved - flag those explicitly.
5. Page deliberately. Results cap at 10 per call and every page is billed
   separately. Fetch the next page (pass meta.result_cap.next_cursor as the
   cursor argument) only when the user actually needs more, and stop when
   meta.result_cap.capped is false.
6. To test a thesis, search twice: once for the thesis, once for the counter
   case. Report both sides with names attached rather than the side that
   happens to rank first.
7. On an error, read the code. unknown_entity and ambiguous_entity mean the
   name did not resolve - try the candidate ids it hands back, or ask the user
   which they meant. invalid_cursor means the corpus refreshed mid-pagination;
   restart from the first page. None of these cost anything.

Then ask it something. The tool reference has more examples, but these exercise all five tools:

Alternative

Beta access token.

If you would rather not wire up a wallet, a bearer token in an Authorization header does the same job. Tool calls are free while the beta runs, rate limited to 10 per hour per token. Tokens are issued by hand — the beta is invite-only.

Request a beta token →

When it misbehaves

Troubleshooting.

You seeWhat it usually means
402 On the x402 path this is the normal first answer, not an error: it carries the quote your agent signs and retries with. If you are sending a beta token and still see it, the token did not match — a wrong or revoked token falls through to the paid path rather than being rejected, so check the string.
401 The paid path is switched off server-side and you sent no valid token. This is a server configuration state, not a comment on your token.
429 You hit the hourly cap. The retry-after header gives seconds remaining. Beta tokens get 10 calls an hour by default; ask if you need more.
405 You sent a GET. The endpoint is POST only — the server is stateless and opens no SSE stream, which is correct for this transport.
404 Wrong path. The only routes are /mcp and /health.
invalid_cursor The corpus refreshed between two pages. Cursors are bound to the snapshot that issued them, which is what stops a refresh from silently skipping or repeating rows. Restart pagination from the first page.
ambiguous_entity The name matched several ids; the error lists the candidates. Pass one of them exactly.
Empty results Check meta.coverage_window. Asking about events outside the window is the usual cause, not a broken query.

Still stuck? Email us with the request you sent and the status code you got back.

See what the tools actually return.

The overview walks through each of the five tools, what the corpus holds, and where its edges are.

MCP overview → How the corpus is built →

Podcast Alpha MCP returns attributed opinions from public recordings — not investment advice. Quotes are attributed to their speakers; inclusion in the corpus is not an endorsement of any claim. See our Terms and Privacy Policy.