Build a Company News Watcher That Posts a Daily Digest
A step-by-step recipe to resolve companies, pull enriched recent news, filter to what matters, and post a daily digest with one endpoint.

You can build a working company news watcher in under twenty minutes: resolve each company to a stable id, pull enriched recent articles for it, keep only the high-signal ones, and post the result as a daily digest. The whole thing runs on one endpoint that returns news already classified by event type, sentiment, and score, so the filtering step is a field check, not a language model you have to train. Everything below uses commands you can paste as-is.
Copy this line to your agent to build a company news watcher.
set up https://monid.ai/SKILL.md and use akta /v1/news to pull enriched recent news for a list of companies and post a daily digest of the high-score items
Monid is a pay-per-call data API marketplace: one interface and one wallet to discover, inspect, and run hundreds of external data endpoints (web scraping, people and company enrichment, social data, news, web search) without a separate signup per vendor. A news watcher is a clean fit, because the loop is small and repeats every day.
TL;DR
- Resolve each company with Akta
/v1/company/searchfirst. It takes a name or a website and returns a stable website and uuid. This lookup is free. - Pull articles with Akta
/v1/news, passing the resolved website (or uuid) ascompany. It returns each article with an AI summary, event classification, sentiment, publisher metadata, resolved company mentions, geography, industry tags, a named-entity object, a news score tier, and the full text. - Filter server-side:
news_score_list=High, astart_datefor the window,sentiment_list, and a publisherblacklistedlist. What comes back is already the digest. discover,inspect, and the company-search lookup are free. Only the newsrunbills, at a fraction of a cent per article plus a tiny flat fee per call. Live rate at monid.ai/tools.
Set up Monid once
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More details in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add --label main --key <your-api-key>
More details in the CLI quickstart.
Step 1: pick your watchlist and resolve each company
Decide what you are watching: your named accounts, a set of competitors, or a target list you are working. The important detail up front is that the news endpoint does not accept a bare company name. It wants a company website (like https://stripe.com) or an Akta company uuid. If your list is already domains, you can skip ahead. If it is names, resolve them first with the free search endpoint:
monid run -p akta -e /v1/company/search --query '{"query":"Stripe"}' -w
That returns the company's uuid, name, website, and status. This call is billed at zero, so resolving a whole watchlist costs nothing. Save the website or uuid for each company. Using the uuid is the more precise choice when two companies share a similar name, since the uuid pins the exact record.

Step 2: inspect the news endpoint (free)
Before spending anything, read the exact input and the returned field list:
monid inspect -p akta -e /v1/news
This prints the schema and the per-result price for free. The two inputs that matter most are company (the website or uuid from Step 1) and start_date (the left edge of your window). The output section is worth reading closely, because the fields it lists are exactly what makes filtering easy later: news_score, sentiment, an event type, resolved company mentions, an entities object, and the article summary. The full reference lives on the Akta news docs.
Step 3: pull recent news for one company
Start with a single company and a tight window to confirm the shape. The -w flag waits inline and prints the result, --query passes the query params, and -o saves the payload to disk:
monid run -p akta -e /v1/news \
--query '{"company":"https://stripe.com"}' \
-w -o stripe-news.json
run is the only paid step here, billed pay-as-you-go at the price already shown during inspect: a fraction of a cent per article plus a small flat fee per call. At the default of ten articles that is well under a cent for the pull. See the live rate on monid.ai/tools. To scope the window to the last day and cap the volume, add a start_date and a limit:
monid run -p akta -e /v1/news \
--query '{"company":"https://stripe.com","start_date":"2026-07-26","limit":50}' \
-w -o stripe-news.json
Step 4: filter to what actually matters
A raw news pull is noisy: reprints, low-signal mentions, and the same event told five times. The endpoint hands you the filters to fix that on the server, so you pay for and receive only the items worth reading.
The single most useful filter is the score tier. Set news_score_list to High and the reprints and passing mentions drop out:
monid run -p akta -e /v1/news \
--query '{"company":"https://stripe.com","start_date":"2026-07-26","news_score_list":"High","group_articles":true}' \
-w -o stripe-digest.json
group_articles:true collapses the same event reported by many outlets into one item, which is what you want in a digest. Three more filters earn their place:
sentiment_listset tonegativewhen you are watching for risk on your own accounts, or left off to see the full picture on competitors.blacklistedwith a comma-separated list of publisher domains you never want, to cut aggregators and low-quality sources.countrieswith ISO codes when you only care about events in specific markets.
Because the filtering happens before the result is priced, a tighter filter is also a cheaper pull. You are not paying to download noise and then throwing it away locally.
Step 5: shape the digest
The saved JSON holds an array of enriched articles. Pull the handful of fields a human digest actually reads with jq: the title, the AI summary, the score, the sentiment, and the source link.
jq '[.[] | {title, summary, score: .news_score, sentiment, url, source: .publisher, when: .published_at}]' \
stripe-digest.json > digest-rows.json
Field names in your payload may differ slightly, so glance at the inspect output or the raw file to confirm the exact keys before wiring the selector. The summary field is the reason this reads well as a digest: each row already carries a one-paragraph gloss of the article, so the reader does not have to open every link to know what happened. The entities object (people, locations, products, events) is there if you want to group or tag the digest further.
Step 6: fan several companies into one digest
A watcher is more than one company. Loop your resolved watchlist, pull each one with the same filters, tag every article with the company it came from, and concatenate. The loop is the whole watcher:
#!/bin/sh
SINCE=$(date -d yesterday +%F)
: > all-news.json
for SITE in stripe.com plaid.com adyen.com; do
monid run -p akta -e /v1/news \
--query "{\"company\":\"https://$SITE\",\"start_date\":\"$SINCE\",\"news_score_list\":\"High\",\"group_articles\":true}" \
-w -o "news-$SITE.json"
jq --arg co "$SITE" '[.[] | {company: $co, title, summary, sentiment, url}]' \
"news-$SITE.json" >> all-news.json
done

Step 7: post it on a schedule
The last step turns a script into a watcher: put Step 6 on a timer (cron, a scheduled cloud job, or a CI schedule) and route the merged output to wherever your team reads it, a Slack webhook, an email, or a channel your agent posts to. Since Monid ships as an MCP server, an agent can run the pull, the filter, and the post in one session without you shuttling files around. Each daily run bills only for the high-score articles it actually returns, so a watchlist of a dozen companies checked once a day stays in the low single-digit dollars per month.
Cost tally
discover,inspect, and every/v1/company/searchlookup: free.- One news
run: a fraction of a cent per returned article, plus a small flat fee per call. A High-score daily pull for one company is a few cents at most. - A dozen companies checked daily for a month: low single-digit dollars, driven by how many articles clear your score filter.
Exact per-result pricing shows before you spend, both during inspect and on monid.ai/tools.
FAQ
Why do I have to resolve the company first?
The news endpoint takes a company website or an Akta uuid, not a bare name. /v1/company/search turns a name into both, and it is free, so the lookup adds no cost to the watcher. Pass the returned website or uuid straight into /v1/news.
Can I watch a topic instead of a company?
Yes. Drop the company param and pass query with an open topic like "stablecoin regulation" or "FDA drug approval". Same endpoint, same enriched fields, useful for a theme that does not map to one company.
How do I keep the digest from repeating the same story?
Set group_articles to true to collapse one event reported by many outlets into a single item, and set news_score_list to High to drop reprints and passing mentions. Both happen server-side before the result is priced.
What does one article cost?
Pay-as-you-go, a fraction of a cent per returned article plus a small flat fee per call, shown by inspect before you run it. Live pricing for every endpoint is at monid.ai/tools.


