wire
Skill3 starsChanged 7 days agoMITView on GitHub
Realtime and backtestable financial news wire — novelty-clustered headlines with entity mentions, sector and asset tags, and trust/importance scores. Operations are list_wire and wire_storyline.
In this repository8 other files it gives its agents.
- alertsSkill
- changesSkill
- developments-and-eventsSkill
- entity-retrievalSkill
- guidanceSkill
- signalsSkill
- stakeholder-identificationSkill
- stock-screeningSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 162
Prefer novelty: ["new","update","correction"] and max_records 10–30 with tight filters.
- Very specific: line 187
Default monitoring set: ["new", "update", "correction"] — cuts roughly half the firehose noise from cross-publisher copies while keeping …
- Very specific: line 217
Keep filter lists tight: across categories, entities, sectors, industries, countries, asset_classes, and publisher, at most 12 values total …
- Distinctive: line 253
Default: good for “how did the story evolve?”
- Distinctive: line 285
No full article text on the public wire surface.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Wire
The Wire is Ultralayer’s structured news firehose: short, fact-dense headlines with novelty links, entity mentions, sector/asset tagging, and trust/importance scores. Public surface exposes metadata + headline only (no article body).
| Operation | Role |
list_wire | Filter + return the most recent matching wire items |
wire_storyline | Expand one item into its novelty ancestor chain + first-degree branches |
When to use
Use the Wire when you need to:
- Scan what is moving now (earnings, guidance, geopolitics, rates, M&A)
- Monitor a company, commodity, country, sector, or publisher
- Deduplicate the firehose via
novelty(new/updatevsduplicate) - Reconstruct how a story evolved (updates, corrections, cross-publisher copies)
- Backtest a window with
start_timestamp/end_timestamp - Build alert-ready conditions (wire alerts take the same filter fields, minus timestamps)
Do not use the Wire when you need:
- Open-web research (article body, quotes, filings, prices) → your native web search tool
- A full entity package →
retrieve_entity - Semantic “find similar stories by meaning” —
list_wireis filter/recency, not embedding search
Use cases
Realtime desk scan — See the latest material earnings and guidance prints without the syndication noise.
{
"max_records": 25,
"novelty": ["new", "update", "correction"],
"categories": ["earnings", "guidance"],
"min_importance_score": 0.5,
"min_trustworthiness_score": 0.7
}Company name watch — Pull only headlines where a specific company is a primary or major subject.
{
"max_records": 20,
"entities": ["Tesla, Inc."],
"entity_relevance": ["primary", "significant"],
"novelty": ["new", "update", "correction"]
}Strong ± sentiment on a name — Surface mentions that are clearly bullish or bearish on the company, not mild noise.
{
"entities": ["easyJet plc"],
"entity_relevance": ["primary", "significant"],
"min_entity_sentiment": 0.3,
"max_entity_sentiment": -0.3,
"max_records": 20
}Geopolitics → commodities — Catch geopolitics that matter for energy and commodities.
{
"max_records": 20,
"sectors": ["energy"],
"asset_classes": ["commodities"],
"categories": ["geopolitics"],
"novelty": ["new", "update"],
"min_importance_score": 0.5
}Issuer originals only — Read what the company itself released, not second-hand rewrites.
{
"content_type": ["press_release"],
"source_relationship": ["first_party"],
"novelty": ["new", "update", "correction"],
"max_records": 20
}Scheduled / future events — Find upcoming earnings and policy dates, not just what already printed.
{
"recency": ["report_of_future"],
"categories": ["earnings", "monetary"],
"max_records": 20
}Backtest a window — Reconstruct what looked important during a specific trading session.
{
"start_timestamp": "2026-07-21T14:00:00Z",
"end_timestamp": "2026-07-21T18:00:00Z",
"novelty": ["new", "update"],
"min_importance_score": 0.6,
"max_records": 50
}Storyline with syndication — See how a story evolved and which outlets copied it.
{
"wire_id": 67337,
"novelty": ["new", "update", "duplicate", "correction"]
}Response detail
Both operations accept detail. Default is full. Reduced levels drop keys only — surviving fields keep the same names and paths as full. Pricing does not change with detail; this is about response token cost in the agent context (wire lists can be large).
| Level | What you get | Rough token savings vs full |
essential | wire_id, source_timestamp, headline, publisher, novelty, thinned entities (name / relevance / sentiment) | Large — drops url, scores, about, taxonomy, most entity identifiers |
standard | essential + url for citation | Between essential and full (url only vs essential) |
full | Every field (about, scores, content type, categories, full entity detail, …) | — |
Exact wire percentages are not published yet; treat essential as the big cut and standard as the usual cite-ready middle. Prefer detail: "standard" for normal agent calls. Use essential for dense scans; use full when you need scores, about, or full entity identifiers.
{
"max_records": 25,
"novelty": ["new", "update", "correction"],
"detail": "standard"
}What you get back
Each item is a compact decision object. Headlines are usually one dense sentence with numbers, entities, and the delta.
| Field | Notes |
headline | Primary content |
wire_id | Pass to wire_storyline |
timestamp | Wire clock — filters use this |
source_timestamp | Publisher time — list_wire sorts by this descending |
novelty + prior_wire_id | Cluster membership. new usually has prior_wire_id: null |
importance_score / trustworthiness_score | 0–1 |
factuality | confirmed / reported / rumor / speculation / forecast |
content_type | news, analysis, opinion, press_release, data_release |
recency | realtime / report_of_past / report_of_future |
source_relationship | first_party / reporting / second_hand |
about | sectors, industries, countries (ISO alpha-2 lowercase), asset_classes |
entities[] | canonical_name, entity_type, relevance, sentiment (−1..1), identifiers |
publisher | Exact string for filters; values are inconsistent (bloomberg, seeking alpha, dow_jones) |
Prefer novelty: ["new","update","correction"] and max_records 10–30 with tight filters.
list_wire
Returns up to max_records (1–100, default 20) matching items, newest by source_timestamp. Pass detail (default full; prefer standard — see detail above).
Filtration vs sort
- Filters apply on
timestamp(wire clock). - Response order is
source_timestampdescending. - A tight time window can include items whose source time looks slightly outside the window. Prefer slightly wider windows when backtesting.
Future end_timestamp values are treated as realtime (no upper bound).
Novelty
| Value | Meaning | Typical prior_wire_id |
new | First material print of a cluster | null |
update | Material change / next beat | prior in chain |
duplicate | Same substance, often another publisher | prior (often a new) |
correction | Number/fact fix; rare but market-critical | prior wrong print |
Default monitoring set: ["new", "update", "correction"] — cuts roughly half the firehose noise from cross-publisher copies while keeping beats and fixes.
Example: Lundbeck FDA Fast Track — pr_newswire item novelty=new, Reuters copy minutes later novelty=duplicate with prior_wire_id → the PR.
Entity filter
entities is include-any.
Pair with entity_relevance and min_entity_sentiment / max_entity_sentiment. When both sentiment bounds are set, min must be greater than max (directional OR: strong positive or strong negative).
Sentiment bounds apply to the matching mention, not the whole item.
Other high-value filters
| Filter | Notes |
categories | Free-form. Common: earnings, guidance, geopolitics, trade, m&a, regulation, macro, monetary, product, tech, litigation. Wrong tags silently return fewer hits. |
sectors | Closed GICS-like enum (information_technology, energy, …) |
industries | Free-form as stored (e.g. "semiconductors") |
countries | Lowercase ISO-3166-1 alpha-2 |
asset_classes | equities, fixed_income, commodities, currencies, crypto, real_estate |
publisher | Exact match; discover from results |
content_type + source_relationship | press_release + first_party for issuer originals |
factuality | rumor / speculation for soft takes |
recency | report_of_future for scheduled/future prints |
min_importance_score | Unfiltered stream is full of 0.2–0.3 items |
min_trustworthiness_score | Filters thin social sources |
Filters combine with AND across dimensions; within multi-value arrays, include-any (OR).
Keep filter lists tight: across categories, entities, sectors, industries, countries, asset_classes, and publisher, at most 12 values total are allowed in one request.
wire_storyline
Given a wire_id, returns the novelty storyline: linear prior_wire_id ancestors plus first-degree children of every chain node.
{
"seed_wire_id": 67583,
"root_wire_id": 49200,
"items": [ ]
}Items are chronological by source_timestamp ascending.
| Param | Notes |
max_ancestor_depth | Default 32, max 64. Caps the linear prior walk (including the seed). |
max_children | Default 32, max 64. Caps first-degree children across the whole chain. |
detail | Default full. Prefer standard. |
Topology
- Walk seed →
prior_wire_id→ … until root, time-window break, ormax_ancestor_depth. - Ancestors are walked even through duplicates so the chain stays connected; novelty filtering is applied when projecting the response (seed always kept).
- Children: only direct children of chain nodes, capped by
max_children. root_wire_idis set only if the walk reached a row withprior_wire_id: null.root_wire_id: nullmeans truncated (time window or depth).- Seed outside the requested time window → 404. Unknown
wire_id→ 404.
Default novelty trap
wire_storyline defaults to novelty: ["new", "update", "correction"] — duplicates excluded. That hides cross-publisher fanout.
- Default: good for “how did the story evolve?”
- Include
"duplicate"when you need “who else printed this?”
Example — easyJet earnings: default novelty → only the Reuters new seed; with duplicates → Reuters + Bloomberg + FT copies.
Example — earnings correction chain: new → correction → update → later conflicting correction. Storyline is how you catch conflicting prints.
Example — multi-day geopolitics: seed linked through consecutive updates to a root days earlier; a tight time window truncates the chain and returns root_wire_id: null.
Workflow
| User intent | Approach |
| “What’s moving markets right now?” | list_wire with novelty without duplicates, min_importance_score ≥ 0.5 |
| “Any news on Company X?” | entities + primary/significant → storyline on the best hit |
| “Did guidance change?” | categories: ["guidance","earnings"], then storyline |
| “Is this a correction?” | novelty: ["correction"] or storyline and look for correction nodes |
| “Who reported it first?” | Storyline with duplicates; earliest new / first_party press release is usually the root |
| “Oil / Red Sea / rates?” | asset_classes + sectors + geopolitics/macro categories |
| “What looked important on date D?” | Timestamp window + importance floor + novelty new/update |
- Clarify scope (entity / sector / theme / time).
list_wirewith noveltynew|update|correction, an importance floor, and the tightest true filters.- Pick the highest-importance hit →
wire_storyline(addduplicateif coverage breadth matters). - Brief from headlines + novelty path; escalate to your native web search tool (or the URL) for body text.
Limitations
- No full article text on the public wire surface.
publisher,industries, andcategoriesare messy real-world strings.- Storyline is shallow by design (linear ancestors + one hop of children).
- Unfiltered
list_wireis noisy — bias novelty + importance. importance_scoreis relative rank, not a guarantee.
FAQ
Q: Why doesn’t storyline show Bloomberg/FT copies?
A: Default novelty drops duplicate. Add it explicitly.
Q: root_wire_id is null but items exist.
A: Ancestry was truncated by time window or max_ancestor_depth. Widen start_timestamp, raise the depth cap, or treat as a partial chain.
Q: Sort order looks wrong vs IDs.
A: list_wire sorts by source_timestamp desc, not wire_id. Filtration still uses timestamp.
Q: list_wire vs alerts?
A: Same filter vocabulary. The Wire is the pull API; a wire alert matches each new item against those conditions as it lands and delivers it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

