A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Official Storyflo MCP server — install + discovery reference. The Storyflo platform is proprietary; this repo is the pub
Official Model Context Protocol server for Storyflo — a curated audio-news platform that narrates trending articles + listener-forwarded newsletters and exposes them as a callable surface for any LLM agent.
This repository contains a zero-dependency stdio bridge (src/index.js) that relays MCP JSON-RPC between a local stdio client and the hosted streamable-http endpoint, plus discovery + install references. The Storyflo platform itself is proprietary; agent integration through the public API is the supported surface.
npx storyflo-mcp # or: node src/index.js
Or via Docker:
docker build -t storyflo-mcp .
docker run -i --rm storyflo-mcp
Environment variables:
| Variable | Default | Purpose |
|---|---|---|
STORYFLO_MCP_URL | https://api.storyflo.com/mcp/v1 | Upstream MCP endpoint |
STORYFLO_TOKEN | (unset) | OAuth bearer for tools/call; discovery (initialize, ping, tools/list, resources/list) works anonymously |
Claude Desktop / any stdio-only MCP client config:
{
"mcpServers": {
"storyflo": {
"command": "npx",
"args": ["-y", "storyflo-mcp"],
"env": { "STORYFLO_TOKEN": "<optional bearer>" }
}
}
}
tech, finance, science, media, sports, culture, + 30 more)| Surface | URL |
|---|---|
| MCP transport | https://api.storyflo.com/mcp/v1 |
| Discovery manifest | https://api.storyflo.com/.well-known/mcp.json |
| OAuth (RFC 8414) | https://api.storyflo.com/.well-known/oauth-authorization-server |
| OpenAI tool spec | https://api.storyflo.com/v1/agents/openai-tools.json |
| API docs | https://storyflo.com/developers |
cursor://anysphere.cursor-deeplink/mcp/install?name=storyflo&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcGkuc3RvcnlmbG8uY29tL21jcC92MSJ9
Settings → Connectors → Add custom connector → URL:
https://api.storyflo.com/mcp/v1
{
"mcpServers": {
"storyflo": {
"url": "https://api.storyflo.com/mcp/v1",
"transport": "streamable-http"
}
}
}
Storyflo exposes 8 tools. Free-tier tools require OAuth only. The single premium tool settles per-call via x402 over USDC on Base mainnet — the agent's payment shim runs before the tool is invoked.
The live tool manifest (with full JSON Schema for every parameter) is at
/v1/agents/openai-tools.json — the source of truth Glama, OpenAI, and Anthropic introspect.
search_articles · freeSearch Storyflo's curated article corpus by query and/or vertical. Use this when the agent needs to find articles matching a topic before deciding which one to read or play.
Parameters
| name | type | required | description |
|---|---|---|---|
query | string | no | Full-text query against title + body + summary. Omit to browse a vertical without a keyword filter. |
vertical | enum | no | One of: tech, finance, science, media, sports, culture. Narrows results to a single vertical. |
limit | int | no | Max results (default 10, capped 25). |
Returns — array of { slug, title, publisher, vertical, snippet, audio_url, listen_seconds, published_at }.
get_article · freeFetch the full record for a single article by slug. Use after search_articles when the agent needs the full body text or full audio URL.
Parameters
| name | type | required | description |
|---|---|---|---|
slug | string | yes | Article slug, as returned by search_articles. |
Returns — { slug, title, body_text, audio_url, publisher, vertical, sources[], published_at }.
get_audio_url · freeResolve the playable audio URL for an article without fetching the body. Use when the agent wants to hand off audio playback to the user. Free tier returns a stitched-with-ad URL; Plus/Pro returns the bare audio.
Parameters
| name | type | required | description |
|---|---|---|---|
slug | string | yes | Article slug. |
Returns — { slug, audio_url, listen_seconds, tier }.
subscribe_topic · freeMint or update the human's personal Storyflo podcast feed. Pass 1–6 vertical slugs and the server creates a private RSS feed scoped to those verticals — or updates the existing feed in place if the listener already has one. Returns the RSS URL the listener can paste into Spotify, Apple Podcasts, Pocket Casts, or any podcast client.
Behavior
ListenerSubscription row is created or updated. The returned RSS URL stays stable across calls for the same listener (no re-pasting needed).list_subscriptions first and pass the union.list_subscriptions first to avoid clobbering an existing feed the listener explicitly chose.Use when the agent has been asked to set up audio news for the human across a defined set of topics. Do NOT use to FETCH articles or audio — that's search_articles + get_audio_url.
Parameters
| name | type | required | description |
|---|---|---|---|
verticals | array<enum> | yes | 1–6 unique slugs from tech, finance, science, media, sports, culture. Replaces (does not append to) the listener's current selection. |
Returns — { feed_url, verticals, listener_token }.
list_subscriptions · freeReturn the listener feeds this agent has minted on the human's behalf. Use before subscribe_topic to avoid creating duplicate feeds.
Parameters — none.
Returns — array of { feed_url, verticals, created_at }.
get_vertical_briefing · paid (x402)Fetch a stitched audio briefing of the top-25 trending articles in a single vertical from the last 24h. Use when the agent wants a "today's headlines for X" experience for the user. Read-only — no listener state mutated.
Parameters
| name | type | required | description |
|---|---|---|---|
vertical | enum | yes | One of tech, finance, science, media, sports, culture, news. |
Returns — { vertical, audio_url, item_count, listen_seconds, articles[] }.
Cost — single x402 charge; covers the full stitched briefing audio.
digest · free (heaviest)Aggregate the top-N articles across one or more verticals for a window (24h / 7d / 30d). The heaviest action — counts most against per-agent rate limit. Use for "read me today's tech + finance news" prompts where the agent wants a curated cross-vertical roll-up rather than a single vertical's briefing.
Parameters
| name | type | required | description |
|---|---|---|---|
verticals | array | no | 1–6 verticals. Defaults to all 6 if omitted. |
window | enum | no | 24h (default), 7d, or 30d. |
limit | int | no | Max articles per vertical (default 5, capped 25). |
Returns — { window, verticals, items: [{ slug, title, vertical, audio_url, snippet }] }.
get_market_linked_stories · freeStoryflo stories that match an actively traded event contract on Kalshi — a CFTC-regulated designated contract market. Each item carries qualitative signal tags plus a link-out to Kalshi's own page where the live market data lives.
This is an editorial sourcing surface, not market-data redistribution. Storyflo never returns raw prices, market-implied probabilities, volumes, or open interest in this payload. The agent or user follows the linkout to see live numbers on Kalshi.
Use when the agent needs to know which Storyflo stories are about news themes that have an actively traded event contract — e.g. World Cup matches, political mention contracts, corporate events. Same shape as a newsroom citing CME futures: market activity informs which stories are worth surfacing.
Parameters
| name | type | required | description |
|---|---|---|---|
vertical | string | no | Filter by story vertical (e.g. news, finance, tech, crypto). |
category | string | no | Filter by Kalshi event category (e.g. Politics, Economics, Companies, Science and Technology, Sports). |
signal | enum | no | One of active, high_velocity, genuine_uncertainty. high_velocity = the matched market is repricing meaningfully in the last 24h; genuine_uncertainty = the market sits in the 40–60% band where it itself is uncertain. |
limit | int | no | Max items (default 10, capped 50). |
Returns — array of:
{
"story": { "slug", "title", "vertical", "published_at" },
"matched_market": { "title", "category", "url" },
"signal_tags": ["active", "high_velocity"?, "genuine_uncertainty"?],
"match": { "score", "shared_terms" }
}
plus top-level attribution and disclaimer strings on every payload.
The matched_market.url links to Kalshi's own events page so the user / agent sees live market data on the source. Storyflo does not redistribute that data.
Compliance posture (counsel-reviewed; regression-tested in CI):
OAuth 2.1 + PKCE. Public clients (Claude/ChatGPT/Cursor's MCP connectors) auto-register via Dynamic Client Registration (RFC 7591) at /oauth/register. No manual API key needed.
The premium tool (get_vertical_briefing) is metered via x402 over USDC on Base mainnet. Agents pay per call, no upfront contract. All other tools (search_articles, get_article, get_audio_url, subscribe_topic, list_subscriptions, digest, get_market_linked_stories) require no payment beyond OAuth.
70/20/10 revenue split: 70% to the publisher, 20% to the recommending agent, 10% to Storyflo. On-chain and deterministic.
Native client libraries for TypeScript and Python:
npm install storyflo-sdk # https://www.npmjs.com/package/storyflo-sdk
pip install storyflo # https://pypi.org/project/storyflo/
npx -y @smithery/cli install storyflo
The Storyflo brand mark for client UIs:
https://storyflo.com/icon-512.png
If you ship an agent that uses storyflo, you might also want the following — same x402-over-Base monetization rail, similar agent-facing posture, or natural complements in the news / finance / audio category space.
If you maintain an MCP server that pairs naturally with storyflo and isn't listed, please open a PR or comment on an issue. We curate this list quarterly.
MIT for this repository's content (README + manifest references). The Storyflo platform itself is proprietary; agent integration through the public API is the supported integration surface.
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots