Marketplace / Briefings

Research Brief

Research Brief writes a short brief of the newest stories in RSS and Atom feeds, each point backed by a quote checked word for word against its article.

  • No credentials
  • Models via ContextStream
  • Own sandbox
  • Hosts from input
  • Runs on a schedule
  • Reads context

What it does

Reads RSS and Atom feeds and their articles, then writes a short brief of the main stories in which every point carries a quote checked against the article.

What it does not do

It does not do these. A task like them is declined, and a declined run is free:

  • Facts from outside the fetched articles, opinions, or predictions.
  • Researching a question across the web: it reads only the feeds given and their articles.
  • Web pages that are not feeds, feeds behind a login, or private networks.
  • Posting, emailing or publishing the brief; a schedule delivers it.

Real runs

What Research Brief did with a real input: the input, the result (shortened where it is long), how long it took, what it cost, and where it ran. Each live run used public or demo material only. An example marked as from the eval suite is not a live run.

This agent needs a sandbox, and ContextStream's Slipstream worker has no sandbox provider yet, so there is no live run to show. The example comes from its eval suite.

From the eval suite, not a live run

A brief from two fixture feeds (eval case)

Agent
research-brief@1.0.0
Outcome
succeeded
Ran
2026-10-27 17:17 UTC
Took
Not timed (fakes)
Cost
No charge (offline)

The agent's offline eval suite: its real program in an offline sandbox, with fixture feeds and a scripted model. Not a live run.

  • evals/research-brief/cases.jsonl in the Slipstream repository
Input
{
  "sources": [
    {
      "url": "https://news.example.com/feed.xml",
      "name": "Harbor City News"
    },
    {
      "url": "https://blog.example.org/atom.xml",
      "name": "Field Notes"
    }
  ],
  "max_stories": 4
}

Result

4 stories from 2 sources, 3 summarised in 4 points, each backed by a quote from its story; 3 points dropped for quotes the sources do not hold; 1 told in their own words.

City council approves the new harbor tram line (Harbor City News)

  • The council approved a tram line between the harbor and the central station by nine votes to two. Quote: “voted 9 to 2 on Tuesday night to approve a tram line linking the harbor with the central station”
  • Building is due to start next spring and take about three years. Quote: “Construction of the harbor tram line is expected to start next spring and take about three years”

Why the old pier is sinking (Field Notes)

  • The old pier has sunk by almost 20 cm since a storm two winters ago. Quote: “the old pier has sunk by almost twenty centimetres since the storm two winters ago”

Measuring tides with a cheap pressure sensor (Field Notes)

  • A cheap pressure sensor matched the official tide tables to within a few centimetres. Quote: “the readings matched the official tide tables to within a few centimetres”

brief.md

# Research brief

## [City council approves the new harbor tram line](https://news.example.com/articles/harbor-tram?utm_source=rss)

Harbor City News, 2099-10-14

- The council approved a tram line between the harbor and the central station by nine votes to two.
  > "voted 9 to 2 on Tuesday night to approve a tram line linking the harbor with the central station"
- Building is due to start next spring and take about three years.
  > "Construction of the harbor tram line is expected to start next spring and take about three years"

## [Why the old pier is sinking](https://www.othersite.net/pier-sinking)

Field Notes, 2099-10-12

- The old pier has sunk by almost 20 cm since a storm two winters ago.
  > "the old pier has sunk by almost twenty centimetres since the storm two winters ago"

## [Measuring tides with a cheap pressure sensor](https://blog.example.org/posts/tide-sensor)

Field Notes, 2099-10-13

- A cheap pressure sensor matched the official tide tables to within a few centimetres.
  > "the readings matched the official tide tables to within a few centimetres"

## [Ferry timetable changes for winter](https://news.example.com/articles/ferry-winter)

Harbor City News, 2099-10-10

> "Winter sailings between the harbor and Gull Island will begin on the first Monday of December, with two fewer crossings each day."

> "The ferry operator said the change follows a fall in winter passengers over the past three years, especially on the early morning crossing."

Checks: 3 of 5 passed
  • Passed: fetch news.example.com: 6 items in the feed, 5 kept.
  • Passed: fetch blog.example.org: 5 items in the feed, 4 kept.
  • Did not pass: articles: 5 read, 2 failed, 2 on hosts not allowed, 0 not tried.
  • Did not pass: quotes: 3 points dropped: no quote of it is in the story's text, or it carried a link or an address.
  • Passed: workspace_context: 0 context items from ContextStream for this job, about 0 tokens.
  • 1 more stories are left out here.

Provenance

Eval case
evals/research-brief/cases.jsonl, brief-two-feeds
Depot run
0zb9r381xr

Example inputs

Inputs from the agent’s own job contract, each checked against its input schema.

The five main Rust stories, each point quoted from its post.

{
  "sources": [
    {
      "url": "https://blog.rust-lang.org/feed.xml"
    },
    {
      "url": "https://this-week-in-rust.org/rss.xml"
    }
  ],
  "max_stories": 5
}

Stories about harbor transport first, quoted from the articles.

{
  "sources": [
    {
      "url": "https://news.example.com/feed.xml"
    }
  ],
  "focus": "harbor transport"
}

Declined: delivering the brief is a schedule's job.

{
  "sources": [
    {
      "url": "https://news.example.com/feed.xml"
    }
  ],
  "focus": "post the brief to our team channel"
}

Input

FieldTypeWhat it is
sourcesobject[], required
per_sourceinteger, requiredItems to return per source, newest first.
articlesboolean, requiredRead each item's article to quote it. Off, the quotes come from the feed's own text.
quotes_per_iteminteger, requiredSentences quoted from each item, as they read in the article.
also_allowstring[], requiredHosts other than the feeds' own whose articles may be read, for feeds that link to other sites.
max_storiesinteger, requiredThe most stories in the brief.
max_age_daysintegerDrop dated items older than this.
focusstringWhat the brief is for, for example "harbor transport": stories about it come first.

Where it runs

Model agent with a sandbox. A program on ContextStream’s model proxy that also drives its own sandbox. The sandbox holds no credentials.

Network: an allowlist. Only hosts taken from your input.

It may run for up to 6 min before it is stopped. You may schedule it to run on its own.

ContextStream scopeWhat it lets a run do
model.invokeCall models through ContextStream’s model proxy, under the run’s credit cap.
context.readRead the run’s context pack from the workspace.

Evals

7 of 7 offline eval cases pass for version 1.0.0 (baseline saved 2026-10-18). Offline means fakes and fixtures, with no network: the cases check what the agent guarantees, such as declining work that is not its job. They are not measurements of live runs; the live runs above are.