agentleFS
UltralayerHQUltralayerHQ/ultralayer-plugin/skills/wire/SKILL.md

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.

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
  1. Very specific:

    Prefer novelty: ["new","update","correction"] and max_records 10–30 with tight filters.

    line 162
  2. Very specific:

    Default monitoring set: ["new", "update", "correction"] — cuts roughly half the firehose noise from cross-publisher copies while keeping …

    line 187
  3. Very specific:

    Keep filter lists tight: across categories, entities, sectors, industries, countries, asset_classes, and publisher, at most 12 values total …

    line 217
  4. Distinctive:

    Default: good for “how did the story evolve?”

    line 253
  5. Distinctive:

    No full article text on the public wire surface.

    line 285

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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).

OperationRole
list_wireFilter + return the most recent matching wire items
wire_storylineExpand 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 / update vs duplicate)
  • 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_wire is 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).

LevelWhat you getRough token savings vs full
essentialwire_id, source_timestamp, headline, publisher, novelty, thinned entities (name / relevance / sentiment)Large — drops url, scores, about, taxonomy, most entity identifiers
standardessential + url for citationBetween essential and full (url only vs essential)
fullEvery 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.

FieldNotes
headlinePrimary content
wire_idPass to wire_storyline
timestampWire clock — filters use this
source_timestampPublisher time — list_wire sorts by this descending
novelty + prior_wire_idCluster membership. new usually has prior_wire_id: null
importance_score / trustworthiness_score0–1
factualityconfirmed / reported / rumor / speculation / forecast
content_typenews, analysis, opinion, press_release, data_release
recencyrealtime / report_of_past / report_of_future
source_relationshipfirst_party / reporting / second_hand
aboutsectors, industries, countries (ISO alpha-2 lowercase), asset_classes
entities[]canonical_name, entity_type, relevance, sentiment (−1..1), identifiers
publisherExact 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_timestamp descending.
  • 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

ValueMeaningTypical prior_wire_id
newFirst material print of a clusternull
updateMaterial change / next beatprior in chain
duplicateSame substance, often another publisherprior (often a new)
correctionNumber/fact fix; rare but market-criticalprior 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

FilterNotes
categoriesFree-form. Common: earnings, guidance, geopolitics, trade, m&a, regulation, macro, monetary, product, tech, litigation. Wrong tags silently return fewer hits.
sectorsClosed GICS-like enum (information_technology, energy, …)
industriesFree-form as stored (e.g. "semiconductors")
countriesLowercase ISO-3166-1 alpha-2
asset_classesequities, fixed_income, commodities, currencies, crypto, real_estate
publisherExact match; discover from results
content_type + source_relationshippress_release + first_party for issuer originals
factualityrumor / speculation for soft takes
recencyreport_of_future for scheduled/future prints
min_importance_scoreUnfiltered stream is full of 0.2–0.3 items
min_trustworthiness_scoreFilters 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.

ParamNotes
max_ancestor_depthDefault 32, max 64. Caps the linear prior walk (including the seed).
max_childrenDefault 32, max 64. Caps first-degree children across the whole chain.
detailDefault full. Prefer standard.

Topology

  1. Walk seed → prior_wire_id → … until root, time-window break, or max_ancestor_depth.
  2. Ancestors are walked even through duplicates so the chain stays connected; novelty filtering is applied when projecting the response (seed always kept).
  3. Children: only direct children of chain nodes, capped by max_children.
  4. root_wire_id is set only if the walk reached a row with prior_wire_id: null. root_wire_id: null means truncated (time window or depth).
  5. 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 intentApproach
“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
  1. Clarify scope (entity / sector / theme / time).
  2. list_wire with novelty new|update|correction, an importance floor, and the tightest true filters.
  3. Pick the highest-importance hit → wire_storyline (add duplicate if coverage breadth matters).
  4. 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, and categories are messy real-world strings.
  • Storyline is shallow by design (linear ancestors + one hop of children).
  • Unfiltered list_wire is noisy — bias novelty + importance.
  • importance_score is 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.