Pronto Stream

io.github.nmxmxh由 GitHub 账号 nmxmxh 发布v0.1.0-beta更新于 Oct 24, 2026

Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.

发布方自己的服务:Stream Estate

已验证Streamable HTTP可网页运行网页搜索与抓取金融数据与分析

概览

AI 生成的概览

一个远程 MCP 服务器,提供多来源实时信号流,助手可搜索、按维度筛选、融合计算并追踪关联,支持付费方案与自助注册。

可以做什么
读取信号流的结构与词表:维度清单、维度列表、数据源、融合产品和计费档案。获取各集合的最新信号,或按 id 获取单条信号。按关键词搜索信号,或按国家、领域、严重程度、语言等维度标签精确筛选。基于实时信号流计算衍生情报产品,并标注所引用的源信号。沿链接图从一条信号追踪到相关、回声和跨领域信号。注册身份、发起支付并完成结算,以激活调用额度、通行证或方案。
适用场景
适合需要当前跨领域信号(新闻、气候、地震等实时源)而非静态语料的助手,并可对其筛选或融合成衍生结果。也适合能自主运行的智能体,包括在无人值守时购买访问权限。
运行要求
远程 streamable HTTP 端点 pronto.stream,无需本地运行时或软件包。未声明身份验证,但可将 register_agent 返回的 API 密钥作为 Authorization 请求头发送,以获得被识别和更高限额的访问。付费方案、通行证和调用额度需通过 open_payment 与 settle_payment 并用加密钱包签名购买。
安装前请注意
该服务器允许智能体自行注册并在无人参与下花钱:open_payment 会报价一笔绑定钱包的购买,settle_payment 需用付款钱包签名,因此可能动用真实资金。register_agent 返回的 API 密钥须保密。仅注册不会获得方案或额外限额。读取按调用计费,并受行数预算限制。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Pronto Stream,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.nmxmxh%2Fpronto-stream/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "pronto-stream": {
      "type": "http",
      "url": "https://pronto.stream/mcp"
    }
  }
}

README

该仓库没有 README。

工具

15

get_billing_profile

Report who you are resolved as and what your plan grants: the agent identity behind this call, the funded account it acts for, the plan, the per-minute call ceiling, the per-response row budget, and which indicator set you may compute. Returns a CWF BILL line, a CREDIT line when a metering balance exists, and a NOTE line naming your state and its remedy when you are not entitled — unauthenticated, or registered but not yet claimed by a funded account. If unauthenticated, call register_agent next: it creates an identity with no human present. From there you can either buy your own plan with open_payment, or hand the claim code it returns to whoever holds your budget.

无需输入参数。

register_agent

Create your own identity on pronto and receive an API key, with no human present. Send the key back as an Authorization header on later calls and you will be recognised across sessions. Registering grants no plan. A new identity has exactly the limits an unauthenticated caller has. There are two ways to raise them, and you can take either. If you hold your own funds, call get_plans and then open_payment — you buy your own plan and no person is involved at any point. If your costs belong to someone else, hand them the claim code and URL in this response; once they claim you, your calls resolve to their plan with no change on your side. Supply an Ed25519 public key (base64) if you can keep the private half: it lets you rotate your own credential before it expires without anyone's help. Without one you cannot rotate, and you must register again when the key expires.

输入参数labelpublic_key

open_payment

Buy access for yourself, with no human involved. Step one of two: this quotes the exact amount and binds the purchase to the wallet you will pay from. Three things can be bought. Call credits: plan "credits" with amount_usd from 1 to 100, at $0.001 a call — one credit per successful tool call, Builder's limits while the balance lasts, no expiry, failed calls not charged. A pass: plan "builder" or "team" with cycle "day" or "week". A plan period: the same plans with cycle "monthly" or "yearly". Nothing renews automatically; buying the same plan again before it ends extends it. You must already have an identity — call register_agent first and send the key as an Authorization header. Call get_plans for the ladder and what each option raises. from_address is required and is the wallet the USDC will leave. It is bound now, before the payment exists, because a transaction hash is public the moment it is mined: without the binding, anyone watching the settlement address could take your transfer and redeem it as their own. Only a transfer from the wallet you name here, redeemed with a signature from that same wallet, will settle this purchase. Returns PAY lines with the atomic amount, the token, the network and the address to pay. Transfer it, then call settle_payment with the transaction hash.

输入参数plan必填cycleamount_usdfrom_address必填

settle_payment

Redeem a payment you have made and activate what it bought — a plan, a pass or call credits. Step two of two, after open_payment and the transfer. Prove the payment is yours: sign the SIGN message from open_payment with the paying wallet (personal_sign; smart wallets via ERC-1271) and pass it as signature. A transaction hash is public once mined, so without the signature anyone who saw your transfer could redeem it. The payment is verified by reading Base: the transfer must have reached the settlement address, from the wallet this purchase was opened with, for at least the amount owed, and be five blocks deep. A payment that is real but not yet deep enough returns a pending error naming that — the money has moved, so do not pay again: it settles on its own once deep enough, and calling this again with the same hash reads the outcome. One transaction pays for one purchase, once. On success your existing API key resolves to the new plan with nothing to change on your side: you become your own principal, and no person holds the subscription.

输入参数signature必填transaction_hash必填

get_plans

List what can be bought — call credits, day and week passes, and plans — what each costs, and what each raises — the call ceiling, the row budget, and whether the commercial indicator set is included. Machine-readable, so you can decide what to do about a refusal without parsing a pricing page: buy the plan yourself with open_payment, or escalate to whoever holds your budget. Returns a CREDITS line, one CWF PLAN line per plan with its pass and period prices, and a SETTLE line naming the asset, network and address to pay.

无需输入参数。

get_latest_signals

Fetch the most recent live signals from the wire in token-efficient CWF format, optionally filtered to one collection. The all-collections view is diversified: no provider may exceed its share of the page, no collection may take more than half of it, and what overflows is named on a note line rather than dropped silently — so a burst of tickers cannot crowd out earthquakes. Pass collection to read one collection at full depth.

输入参数limitcursorrelatecollection

get_signal

Fetch one signal by its id, when you already know which one you want. Every other read tool returns a set and bounds it, so re-reading a single row through them means re-running a query and hoping the row survives the row budget a second time; this returns that row and nothing else. Takes either the full correlation id or the short handle in column 2 of any CWF row — cite the handle, pass it back here. The live window turns over in about two minutes, so a signal read several calls ago may have aged out; the error says which of the two happened rather than leaving you to look for a typo. To find signals rather than re-read one, use search_signals or scope_signals; to reach the ones about the same subject, use get_related_signals.

输入参数correlation_id必填

search_signals

Find signals by the words in them. Use this when you are looking for a subject — a storm name, a company, a phrase a report would print — and cannot name it as a category. When you can name it as a category instead (a country, a domain, a severity), scope_signals selects that slice exactly and does not depend on any particular word appearing; this tool ranks by word overlap and will miss a matching signal that phrased it differently. The search covers places, observations, summaries, identifiers, and the country and topic facets of each signal, so "Japan" reaches a Japanese-language article that never writes the word. A signal is returned when it contains the words you asked for. Inflections count: "flood" reaches "flooding" and "quake" reaches "quakes". Synonyms do not: the match is lexical, not semantic, so "car" does not reach "automobile" and "downturn" does not reach "recession". Use the words the source would have used. Results are ranked by how much of your query each signal contains, exact phrase matches first. When nothing contains your terms the tool returns an error rather than the closest available rows; an empty result means the wire does not carry it, not that the search gave up. Returns CWF lines.

输入参数sortlimitquery必填cursorlocalemin_severity

list_fusion_products

List every derived intelligence product pronto can compute, with the published index or model each one implements, the signal collections it consumes, and whether it needs a plan. Read this to find out whether pronto computes the thing you need, then call get_fused_signal to actually compute it. The two tools answer different questions and the difference matters. This one states the catalogue, reads no signals, and returns the same answer on a wire that is still warming up. get_fused_signal states what the current window can support, so a product missing from its output means the inputs are not flowing right now, not that the product does not exist. Each row states its attribution: "published" is a faithful implementation of an external, citable index, "composed" is authoritative published inputs combined by a rule that is pronto's own and disclosed in the method. Rows marked plan:team are the commercial macro and energy models; when your plan does not include them a NOTE line names them, so a gated product is never mistaken for a missing one.

无需输入参数。

get_fused_signal

Compute derived intelligence products from the live wire. Each result states the method it implements and cites the signals it was computed from; a source row with no citation is labelled as such. Pick one from the `product` enum, or omit it for everything the current window supports. A product absent from the output has no live inputs right now — list_fusion_products states the whole catalogue and does not depend on the window. Cross-source products exist only because independent publishers are time-aligned on one wire; no upstream API emits them. seismic_solution_consensus is the sharpest case: several national agencies locate one earthquake and it reports how far apart their solutions are, in magnitude, depth and true three-dimensional hypocentre. Read it before acting on any single magnitude — agencies routinely differ by half a unit while an event is still being located, which is a factor of five in energy. recession_risk_12m and sahm_recession_indicator disagree on purpose: the first forecasts, the second says a downturn has probably already begun. Read both. Some indicators are included from the Team plan. A response that withheld one says so on a NOTE line naming what and why, so an absence is never mistaken for a quiet wire.

输入参数product

scope_signals

Select a slice of the live wire by facet tags — the structured metadata each signal carries, not the words in its text. Use this when you can name the slice you want: every high-severity climate signal in Japan, everything from one provider, everything in one language. It returns the whole slice whatever words the signals happen to use, which is what separates it from search_signals; reach for search when you have a subject word and no category to name. Facets cover language, country, region, domain, topic, severity, provider, coverage, and place. Facets that share a key combine with OR. Facets with different keys combine with AND. The filter "country:JP,country:CL domain:climate" selects Japan or Chile, and climate. A locale filter alone cannot answer this question.

输入参数limitcursorfilterlocalerelate

get_facet_manifest

Read the shape of the wire in one small response: a two-level tree of domain and the topics under it, each with a signal count, ranked so the busiest lead. This is the map to read first — read it once, choose a scope offline, then make one precise call to scope_signals or search_signals instead of guessing a filter. It covers two facet keys only, domain and topic, and truncates the topic tail under each domain, so it stays short enough to read in full. When you need the rest of the vocabulary — the languages, countries, providers, severities, coverages and place ids you can also filter by, exhaustively and with counts — call list_facets instead. The manifest states structure, not signal content.

无需输入参数。

list_facets

List the full filter vocabulary: every facet value currently on the wire, across every key — lang, country, region, domain, topic, severity, provider, coverage and place — as one flat list with a signal count each, and a human-readable label for place ids. Every value it returns is a value scope_signals will accept right now. This is the exhaustive listing and it is long, running to a hundred-odd values on a busy wire. If all you need is to pick a domain and a topic, get_facet_manifest answers that in a fraction of the tokens; come here when you need a value the manifest does not carry, or the counts behind one. Place facets are gazetteer ids; filter them by name with scope_signals rather than by the raw id.

无需输入参数。

list_data_sources

List the data-source endpoints feeding the wire, with provider, signal type, country, cadence, and license. Returns one SRC line per source.

输入参数signal_type

版本历史

1
  1. v0.1.0-beta最新Sep 16, 2026

评分

已满足适用检查项的 75%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分

    请声明包含 README 的 GitHub 仓库,或在 OAuth 受保护资源元数据中提供 resource_documentation。

  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。

其他 Stream 集成