Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Track finance headlines, daily market radar, and source-backed financial news through Fin Pulse.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-15 | ✓→✗ | ▼ Worse | 106% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 52% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 72% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 56% | 0% |
Use this skill whenever the user asks about finance headlines, daily briefs, hot-topic keyword alerts, or scheduled IM pushes from the fin-pulse plugin. The plugin exposes seven agent tools that let you create ingest / daily_brief / hot_radar tasks, inspect their status, paginate tasks, cancel a running job, read / write the plugin config, and search the article index by keyword / source / days window.
Call fin-pulse tools when the user says (or implies):
fin_pulse_search_newsfin_pulse_create(mode="daily_brief", session=...)fin_pulse_create(mode="hot_radar", ...)+ targets=[{"channel":"feishu","chat_id":"..."}]
fin_pulse_search_news(q="X")fin_pulse_create(mode="ingest")fin_pulse_status(task_id="Y")fin_pulse_listfin_pulse_settings_setfin_pulse_settings_getDo not call these tools when the user only wants general finance commentary; prefer web search for commentary and fin-pulse only for their plugin state.
fin_pulse_createCreates + runs a task synchronously (returns when done). mode is required and must be one of ingest / daily_brief / hot_radar. Pass extra params either nested under params or flat — both work.
Canonical shapes:
json{"mode": "ingest", "since_hours": 24} {"mode": "daily_brief", "session": "morning", "since_hours": 12, "top_k": 20, "lang": "zh"} {"mode": "hot_radar", "rules_text": "+美联储\n+降息\n!传闻", "targets": [{"channel": "feishu", "chat_id": "oc_xxx"}], "since_hours": 24, "cooldown_s": 600}
since_hours: int in [1, 72] for ingest / daily_brief,[1, 168] for hot_radar — out of range values clamp silently.
top_k: int in [1, 60], defaults to 20.session: morning / noon / evening. Reject anything elseinstead of guessing.
min_score: float in [0, 10]. Optional.The returned envelope always has ok: bool and either a typed payload (task_id, digest, result) or an error / hint. Never retry on invalid_mode / missing_rules — surface to the user.
fin_pulse_status(task_id) / fin_pulse_cancel(task_id)status returns the full task row (params + progress +error_kind if failed).
cancel is idempotent and safe to call twice.fin_pulse_listlimit clamps to [1, 200] default 50. Filter by mode / status as needed. Use it to confirm state before suggesting a fresh ingest.
fin_pulse_settings_get / fin_pulse_settings_setget returns a redacted map — any key containing api_key, token, webhook, secret, or password is masked as ***. Never surface the *** value to the user as real data.
set takes {"updates": {k: v}} where values are stringified on store. Don't write large JSON blobs through this tool.
fin_pulse_search_newsThe daily-driver search tool:
json{"q": "美联储", "days": 1, "min_score": 6, "limit": 20} {"source_id": "wallstreetcn", "days": 7, "sort": "score"}
q supports plain LIKE matching today; the +must / !excludeDSL is evaluated by hot_radar, not by this search — don't promise that syntax here.
days clamps to [1, 90].items sorted by time (default) or AI score(sort=score). Each item has title, url, summary, source_id, ai_score, fetched_at, published_at.
ok=false, quote the error kind plus anyhint — don't invent explanations.
the user either run fin_pulse_create(mode="ingest") first or widen the days window.
digest.stats (total_selected,source_breakdown). Surface the count so the user knows whether the digest is meaningful.
fp-<uuid>; include it in your reply sothe user can reference it later.
fin_pulse_search_news(q="美联储", days=1, min_score=5, limit=10).items.length < 3, follow up withfin_pulse_create(mode="ingest", since_hours=6) and retry.
since_hours=12, top_k=20, lang="zh") → get task_id + digest.
digest.title and article count so the usercan confirm.
选飞书 / 企微,或把 channel + chat_id 告诉我我再帮你补 发 hot_radar 任务推一次。" (Do not try to call dispatch/send from the tool surface — the REST surface is the right entry point and requires an explicit chat_id.)
"+美联储\n+降息\n!传闻"}}).
(POST /schedules) or an explicit fin_pulse_create(mode="hot_radar", ...) with targets.
dispatch/send or hot_radar/run without an explicitchat_id from the user — IM pushes are user-visible and spamming them is a support incident.
fin_pulse_settings_get reveals newsnow.mode=off, don'tpretend NewsNow data is present.
reply that it's redacted at the tool surface and point them to the plugin Settings tab.
Other measured skills in the registry, with their headline benchmark lift.