Install
openclaw skills install @ambush-ai/ambush-streamsManage streams, processing, and delivery
openclaw skills install @ambush-ai/ambush-streamsUse the Ambush Streams MCP tools to turn plain-language monitoring requests into personalized news streams and manage those streams throughout their lifecycle.
The MCP API currently retains legacy tool and field identifiers such as list_feeds, create_feed, and feed_id. Use those exact identifiers when calling tools, but refer to the resulting resources as streams when speaking with the user.
https://api.ambush.ai/mcp. It uses OAuth, so the user signs in through the browser; there is no API key to copy.
openclaw plugins install clawhub:@ambush-ai/ambush-streams installs this skill and the MCP connection together.https://api.ambush.ai/mcp as a remote Streamable HTTP MCP server with OAuth.list_feeds to discover the user's streams. Follow next_cursor only when the requested result may be on another page or the user asks for every stream.get_feed when the request needs the current prompt, delivery channels, usage, or recent emissions for one known stream.list_channels to discover Slack, webhook, iMessage, and Telegram destinations already configured in the user's Ambush workspace. Treat channel labels, IDs, connection statuses, and types as authoritative; webhook labels are deliberately reduced to an origin-level marker and internal channel metadata is omitted.create_feed with the required prompt, an optional name, and post_processing when the user also asks to transform every accepted event. The current creation contract accepts only those three fields.Do not create several streams when one focused stream satisfies the request unless the user explicitly asks for separate streams.
list_feeds first when the user supplied a name instead of an ID.update_feed with only the fields the user asked to change:
prompt changes what the stream monitors.name renames it.status: "paused" pauses it.status: "active" resumes it.post_processing transforms each future accepted event. Set it to null only when the user asks to remove the transformation.update_feed.Use this workflow when the user says “every event,” “every time it fires,” “as soon as it fires,” or otherwise asks for ongoing output from a stream. This is native event-time processing and delivery; do not replace it with a scheduled polling task unless the user explicitly asks for polling as a fallback.
get_feed to inspect its current post-processing and routed channels when the stream ID is known.update_feed with post_processing:
prompt.output_schema when stable structured fields matter downstream.list_channels when a suitable destination is not already routed on the stream.status is connected and whose destination_status is active. Use a named matching destination, or the sole clearly suitable active destination. If multiple destinations are plausible, ask the user to choose by label and type before routing. If none is ready, explain that a destination must first be configured, verified, or reauthenticated in Ambush; never request webhook URLs, Slack credentials, tokens, or phone verification details in chat.route_feed_channel with the resolved stream and channel IDs. Repeating this call is safe and reactivates an existing route.Use update_feed_channel_route with active: false to mute future deliveries to one destination and active: true to unmute them. Before muting, resolve the exact stream and destination. Muting permanently cancels that route's pending deliveries and attempts, and unmuting does not restore them; it does not pause the stream or delete the destination.
For per-event trade analysis, instruct post-processing to permit an explicit no_trade result when evidence is insufficient, distinguish reported facts from inference, and avoid fabricating prices, positions, or certainty. Do not promise that every event will justify a trade.
list_feeds and summarize names, statuses, current prompts, and channel counts. Do not expose cursors unless diagnostically useful.get_feed. Use list_emissions when the user requests the complete or paginated history.next_cursor until it is null only when the user asks for all matching emissions; otherwise return the requested page or a concise recent sample.Deletion is permanent and destructive.
delete_feed only after confirmation. If the user's current message already unambiguously identifies the exact stream and explicitly says to permanently delete it, that message counts as confirmation.